我在問一個關於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