我在问一个关于JMS的简单问题,我正在通过spring集成和spring实现,但是我陷入了一种情况,请告诉我,假设我正在排队5000条消息,我想汇总一组20条消息然后转发它,这意味着我需要某种聚合,它将从5000条消息中取出20条消息,并将转发这20条消息,请告知如何实现此目的。关于汇总消息
我也准备通过这种模式也.. http://www.eaipatterns.com/Aggregator.html
我在问一个关于JMS的简单问题,我正在通过spring集成和spring实现,但是我陷入了一种情况,请告诉我,假设我正在排队5000条消息,我想汇总一组20条消息然后转发它,这意味着我需要某种聚合,它将从5000条消息中取出20条消息,并将转发这20条消息,请告知如何实现此目的。关于汇总消息
我也准备通过这种模式也.. http://www.eaipatterns.com/Aggregator.html
我有类似的问题,我解决了它在每条消息与一个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()"
/>
哎,它的工作原理。
可以请你发布完整的代码,这将是一个很大的帮助,谢谢inadvance – 2013-03-15 15:14:50
这就是魔术..根本没有代码。正如用户mfisher所说的,您所需要的只是发布策略和关联策略的xml定义。何时发布消息以及如何对消息进行分组 – josete 2013-03-20 08:43:19
Spring集成参考手册的这部分应提供所有您需要的信息: http://static.springsource.org/spring-integration/docs/2.2.x/reference/htmlsingle/#aggregator
基本上你要释放战略返回当消息组大小达到20时为true,并且您想要一个仅将所有消息视为在同一组中的关联策略(除非您确实具有其他组成员指示符)。
希望有所帮助。 -Mark
忘记“模式”。请定义*问题*!问:“聚合”是什么意思?什么标准决定哪些消息要转发,哪些消息要丢弃?为什么你完全需要放弃任何东西?放弃“错误”讯息的后果是什么? *什么是实际的“要求”*? – paulsm4 2013-03-15 05:48:21
请指教我可以在核心Java也实现这一点..也! – 2013-03-15 06:19:54