我正在爲一家我們正在考慮Mule ESB的公司工作。我們需要在羣集配置中設置Mule以獲得Mule高可用性(HA)羣集。多臺服務器與兔子MQ交互
現在,我們需要在電源中斷或磁盤故障的情況下將傳入消息保留到隊列中。據我瞭解,我們可以使用默認的Mule Object Store,它將消息「持久」到共享內存網格。然而,我首先想到的是,如果我們發生停電而使整個集羣失去作用,這就不會有什麼好處。
我們的其他選擇是使用獨立的隊列產品,如RabbitMQ或ActiveMQ。但是,這些與HA集羣完全一致嗎?這些產品中是否有任何機制確保同一信息不會被兩臺機器同時拾取?
考慮這種情況(基於觀察者模式):
- 騾接收消息時,把它放在一個隊列,並響應與行 ,其遞送的消息的客戶端。
- Mule從隊列中挑選一條消息,並嘗試將其傳遞給訂閱者。
- 用戶接受該消息,Mule將其從隊列中移除。
如果HA羣集中的另一個Mule實例嘗試拾取上述2和3之間的消息,會發生什麼情況?是否有一種機制,Mule可以指示從隊列中選擇一條消息進行「嘗試傳送」,但如果傳送失敗,則在傳送失敗時將隊列上的消息更新爲「未傳送」?