关于聚合消息

时间:2013-03-15 05:41:26

标签: java jms spring-integration spring-jms

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

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

2 个答案:

答案 0 :(得分:1)

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

基本上你想要一个在消息组大小达到20时返回true的发布策略,并且你想要一个简单地认为所有消息都在同一组中的相关策略(除非你有一些其他的组成员指标) )。

希望有所帮助。 -Mark

答案 1 :(得分: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()"
     />

嘿,它有效。