當前位置:
首頁 > 知識 > RabbitMQ系列教程 高級篇五 return消息機制

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上,歡迎大家下載查看

下節預告:

在下節課中,我們將講解消費端自定義監聽器

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 凱哥java 的精彩文章:

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

TAG:凱哥java |