2013-03-15 73 views
1

我在问一个关于JMS的简单问题,我正在通过spring集成和spring实现,但是我陷入了一种情况,请告诉我,假设我正在排队5000条消息,我想汇总一组20条消息然后转发它,这意味着我需要某种聚合,它将从5000条消息中取出20条消息,并将转发这20条消息,请告知如何实现此目的。关于汇总消息

我也准备通过这种模式也.. http://www.eaipatterns.com/Aggregator.html

+0

忘记“模式”。请定义*问题*!问:“聚合”是什么意思?什么标准决定哪些消息要转发,哪些消息要丢弃?为什么你完全需要放弃任何东西?放弃“错误”讯息的后果是什么? *什么是实际的“要求”*? – paulsm4 2013-03-15 05:48:21

+0

请指教我可以在核心Java也实现这一点..也! – 2013-03-15 06:19:54

回答

0

我有类似的问题,我解决了它在每条消息与一个atomicLong创建一个计数器。

然后,releast战略将释放每X消息后的消息,基于该计数器(存储为MESSAGE_ID头)

<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()" 
    /> 

哎,它的工作原理。

+0

可以请你发布完整的代码,这将是一个很大的帮助,谢谢inadvance – 2013-03-15 15:14:50

+0

这就是魔术..根本没有代码。正如用户mfisher所说的,您所需要的只是发布策略和关联策略的xml定义。何时发布消息以及如何对消息进行分组 – josete 2013-03-20 08:43:19