我问了一个关于我通过 spring 集成和 spring 实现的 JMS 的简单问题,但是我遇到了一种情况,请告诉我,假设我在队列中收到 5000 条消息,我想在一个一组 20 条消息然后转发它,这意味着我想要某种聚合,它将从 5000 条消息中获取 20 条消息并转发这 20 条消息,请告知如何实现这一点。
我也经历过这种模式.. http://www.eaipatterns.com/Aggregator.html
我问了一个关于我通过 spring 集成和 spring 实现的 JMS 的简单问题,但是我遇到了一种情况,请告诉我,假设我在队列中收到 5000 条消息,我想在一个一组 20 条消息然后转发它,这意味着我想要某种聚合,它将从 5000 条消息中获取 20 条消息并转发这 20 条消息,请告知如何实现这一点。
我也经历过这种模式.. http://www.eaipatterns.com/Aggregator.html
Spring Integration 参考手册的这一部分应提供您需要的所有信息:http: //static.springsource.org/spring-integration/docs/2.2.x/reference/htmlsingle/#aggregator
基本上,您想要一个在消息组大小达到 20 时返回 true 的发布策略,并且您想要一个相关性策略,它只考虑所有消息都在同一个组中(除非您确实有一些其他组成员资格指标)。
希望有帮助。-标记
我遇到了类似的问题,我用 atomicLong 在每条消息中创建了一个计数器来解决它。
然后,发布策略将根据该计数器(存储为 message_id 标头)在每 X 条消息之后释放消息
<int:aggregator ...
release-strategy-expression="size() == ${max.size}"
correlation-strategy-expression="new java.lang.Double(new java.lang.Double(headers.message_id) / ${max.size}).longValue()"
/>
嘿,它有效。