我有一個模塊,它在JVM
(無容器)中獨立運行,並通過JMS
與其他模塊通信。 我的模塊既是一個隊列中的生產者又是另一個隊列中的消費者。 因此,我需要將這個模塊集羣化,既出於HA原因,又出於工作負載的原因,我可能會使用Terracotta + Hibernate來集成我的實體。 目前,當我的應用程序啓動時,它啓動一個線程(通過Executors.newSingleThreadExecutor()
)作爲消費者(我可以附上實際的代碼示例,如果相關和必要的話)。模塊集羣和JMS
我從這裏閱讀理解的問題是什麼,如果我剛開始我的模塊上N
不同JVMs
然後N
不同的用戶將被創建和隊列中的每個消息將到達N
用戶。 我想要做的是隻有其中一個(讓我們現在說哪一個不重要)處理該消息,因此實際上使我能夠一次處理N
消息。
該怎麼做/應該這樣做?我離開賽道嗎?
順便說一句,我使用OpenMQ
作爲我的實現,但我不知道這是否相關。
感謝您的任何幫助
嗨Tushar,謝謝你的幫助。 什麼是廣播消息?它是在JMS隊列上發送的不同類型的消息嗎?另外你的意思是:「隊列對點對點通信有用」不是很有效「? 謝謝 – Ittai 2010-08-17 10:41:05
我的意思是使用基於主題的通信來代替基於隊列的通信,您必須在傳遞消息時指定目的地,或者必須實現某種路由器邏輯,以根據某些特定消費者將消息路由給特定的消費者標準。 – 2010-08-17 10:54:16
Hi Tushar,我讀了一些關於Topic vs. Queue的內容,你的解決方案聽起來很棒。 我不明白的唯一事情就是關於「設置消息的有效性......」爲什麼我需要設置其有效性?主題機制的定義是不是會被一個消費者消費? Ittai – Ittai 2010-08-18 11:08:42