有没有办法以这样的方式设置弹簧集成通道,让它说只有在累积了50条传入消息后才将消息发送到输出通道。从轮询的角度来看,我希望轮询过程基于消息的数量而不是固定的时间间隔。以某种方式轮询上一个频道可能多次,但只有在它足够处理时接受消息
答案 0 :(得分:3)
<aggregator/>
使用release-strategy-expression="size == 50"
和correlation-strategy-expression="'foo'"
(以及expire-groups-on-completion="true
)。 expire-groups设置允许形成下一个组('foo')。
使用简单的<splitter />
跟踪聚合器(没有表达式,只有输入/输出通道)。
聚合器将累积消息直到50到达,然后将它们作为集合释放,分割器将把集合拆分回单个消息。
如果要根据大小或已用时间进行发布(如果经过x秒,则释放短组),然后配置MessageGroupStoreReaper
。