RabbitMQ系列教程 高級篇五 return消息機制
RabbitMQ消息中間件技術精講12 高級篇五 return消息機制
Return消息機制:
Return Listener的使用是用於處理一些不可路由的消息
我們的消息生產者,通過指定的路由(Exchange)和Routingkey,把消息送達到某一個隊列中去,然後我們的消費者監聽隊列,進行消費處理操作。
但是,在某些場景或情況下,如果我們在發送消息的時候,當前的exchange不能在或者是指定的routingkey路由不到,這種情況下,如果我們需要監聽這種不可達的消息,就可以使用return listener了。
使用:
在基礎API中有一個關鍵的配置項:
Mandatory:如果設置為ture,則監聽器會接收到路由不可達的消息,然後進行後續處理,如將不可達消息記錄日誌或者給開發人員發送警報有點等等;如果未false,那麼broker端自動刪除該消息。
流程圖:
生產端代碼:
在生產端添加returnListener監聽
發送消息:
在發送消息的時候第三個參數,設置為true標識接收returnListener的設置為false當交換機或者routingkey路由不到後,會自動拋棄消息的。
發送測試:
發送正確的消息,查看消費者端:
正常消費。
發送錯誤的routingkey,設置mandatory為false。查看生成端和消費端:
生產者代碼修改:
生成者:
消費者:
我們發現,生產者正常發送消息,但是消費者接收不到消息。因為routing key是錯誤的,所以消費者接收不到。在頁面管控台查看,也沒有消息。所以MQ已經將錯誤的消息拋棄了。
下面我們將mandatory為true,還是發送錯誤的routingkey。
修改生產者代碼:
我們啟動消費者和生產者之後,在生產者的控制台列印如下:
我們可以看到返回code時312,返回消息時:no_route等等其他消息。
說明已經達到了我們預期結果。
本文總結:
相關代碼已發布在git上,歡迎大家下載查看
下節預告:
在下節課中,我們將講解消費端自定義監聽器


※MQ消息中間件技術精講10 高級篇三 冪等性保障不重複消費
※JVM學習系列學習六
TAG:凱哥java |