RabbitMQ的備份交換器

一:介紹

生產者將生產的消息發送到交換器,如果由於路由錯誤不能到達指定隊列,那麼就會被髮送到備份交換器,進而路由到備份隊列存儲起來,以便供以後消費處理;這樣做可以保證未被路由的消息不會丟失。其實保證消息不會丟失還可以通過設置mandatory參數爲true,讓生產者添加ReturnListener監聽器的編程邏輯,來接收未被路由的消息;但是這樣做生產者的代碼會更復雜,所以我們可以使用備份交換器來處理這類消息。

二:示意圖

三:備份交換器類型

備份交換器和普通交換器其實一樣,爲了方便使用,建議類型設置爲 fanout 類型;也可以設置direct或者topic,但是需要注意的是:消息被重新發送到備份交換器時的路由鍵和從生產者發出的路由鍵是一樣的,所以備份交換器和備份隊列的綁定鍵要匹配上消息發出時的路由鍵;其實我們設置備份交換器的目的就是爲了在消息的路由鍵沒有匹配上時來接收這類“無家可歸”的消息,所以沒必要將類型設置爲direct或者topic。

四:備份交換器的特殊情況

(1)設置的備份交換器不存在

(2)備份交換器沒有綁定任何隊列

(3)備份交換器沒有任何匹配的隊列

以上三種情況,客戶端和服務端都不會出現異常,“無家可歸”的消息會丟失。

(4)如果配置了 mandatory 參數和備份交換器一起用,那麼參數無效。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章