在我的previous message中,我一直在尋找解決方案來並行處理傳入消息。經過大量的試驗和錯誤,我想我可能有一個工作解決方案。在代理重啓時丟失處理器中的消息
但是,我正在處理的平臺的其中一項要求是,正在處理的消息在突然重新啓動代理的情況下需要「重新啓動」或「重新排隊」。
在測試過程中,我一次成功地啓動了多個處理器,爲每個消息執行一個工作單元。我突然重新啓動代理時發現的是,處理器內部「正在處理」的任何消息實際上已經丟失。但是,當處理器拋出故意的異常時,該消息被重新傳送到隊列中。
如何保護正在處理的消息(並且工作單元尚未完成)? 任何意見是高度讚賞。
注意:最終的實現將使用一個tcp負載均衡器後面的兩個相同代理的主 - 主設置。
您是否正在使用事務並且有問題的消息是否持久? – 2014-11-03 14:45:47
使用DeliveryMode.PERSISTENT將消息發佈到隊列中。不知道如何將交易添加到我的處理器。目前,如果我殺死了activemq的java進程,那麼所有「正在進行的」消息都消失了。 – djBo 2014-11-03 16:00:38
我只是將交易添加到每條路線,但隨後消息不再被並行處理... – djBo 2014-11-03 16:28:40