[英]Java: synchronizing threads across multiple servers
我有一個問題,我需要為Windows上的Java服務跨多個不同服務器同步多個線程的處理。
在這個應用程序中,我在同一個JMS隊列中有多個消費者線程拉取消息。 消息以3或4組的形式出現,我需要確保每個組中的消息都是完全串行處理的。 我需要某種同步機制來確保thread1是否關閉了一個消息,然后thread2從該組中提取下一條消息,thread2在開始處理它的消息之前等待thread1完成處理。
關於線程的分布式同步機制的任何建議? 任何類型的解決方案都會很好(JMS解決方案,分布式緩存等)
注意:我們使用的JMS提供程序是ActiveMQ。
ActiveMQ支持消息組 ,從字面上看,它應該正是您所需要的。
消息頭中是否有類似組ID的內容? 如果是這樣,消費者可以創建一個Selector
來按順序處理該組。
可以通過散列組標識符來完成將組分配給特定消費者,或者可以使用諸如Paxos或虛擬同步之類的一些共識協議(其中消息通過單獨的隊列發送)主動地彼此協調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.