1

我问了一个关于我通过 spring 集成和 spring 实现的 JMS 的简单问题,但是我遇到了一种情况,请告诉我,假设我在队列中收到 5000 条消息,我想在一个一组 20 条消息然后转发它,这意味着我想要某种聚合,它将从 5000 条消息中获取 20 条消息并转发这 20 条消息,请告知如何实现这一点。

我也经历过这种模式.. http://www.eaipatterns.com/Aggregator.html

4

2 回答 2

1

Spring Integration 参考手册的这一部分应提供您需要的所有信息:http: //static.springsource.org/spring-integration/docs/2.2.x/reference/htmlsingle/#aggregator

基本上,您想要一个在消息组大小达到 20 时返回 true 的发布策略,并且您想要一个相关性策略,它只考虑所有消息都在同一个组中(除非您确实有一些其他组成员资格指标)。

希望有帮助。-标记

于 2013-03-15T12:06:08.610 回答
0

我遇到了类似的问题,我用 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()"
     />

嘿,它有效。

于 2013-03-15T15:01:09.473 回答