2014-01-25 30 views
1

有沒有一種方法可以設置彈簧積分通道,這樣可以說它只會在消息累積50條傳入消息後纔將消息發送到輸出通道。從輪詢的角度來看,我希望輪詢過程基於消息的數量而不是固定的時間間隔。以某種方式輪詢以前的渠道可能多次,但只接受消息一旦它有足夠的過程在通道中保持消息,直到達到限制

回答

3

使用<aggregator/>release-strategy-expression="size == 50"correlation-strategy-expression="'foo'"(和expire-groups-on-completion="true)。 expire-groups設置允許下一個組(「foo」)形成。

按照聚合器的簡單<splitter />(沒有表達式,只是輸入/輸出通道)。

聚合器會累積消息,直到50個到達,然後將它們作爲集合發佈,並且拆分器會將集合拆分回單個消息。

如果您想根據尺寸或經過時間釋放(如果經過x秒,請釋放一個短組),然後配置一個MessageGroupStoreReaper

+0

通過指定'correlation-strategy-expression =''foo'「'它是否會將每個消息的聽者值添加爲foo,或者是它在頭文件中預期已經存在以便聚合文件。基本上我想知道的是,如果我在收到的消息中添加此標頭值以使聚合器正常工作。謝謝 – adeelmahmood

+0

不;這只是說使用一個常量(''foo'')進行關聯;所有郵件將位於同一組中,而不管任何標題。默認的關聯表達式是'headers ['correlationId']'。 –