2013-03-15 94 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