MQ消息中間件技術精講11高級篇四 confirm 確認消息
RabbitMQ消息中間件技術精講11 高級篇四 confirm 確認消息
理解Confirm消息確認機制:
消息的確認,是指生產者投遞消息後,如果broker收到消息,則會給生產者一個應答;
生產者經行接收應答,用來確定這條消息是否正常的發送到broker,這中方式也是消息的可靠性投遞的核心保障!
確認機制流程圖:
如何實現Confirm確認消息?
第一步:在channel上進行開啟確認模式:channel.confirmSelect();
第二步:在channel上添加監聽:addConfirmListener,監聽成功和失敗的返回結果,根據具體的結果對消息進行重新發送,或記錄日誌等後續操作。
代碼實現:
添加確認消息監聽是在生產端處理的,所以生產端代碼如下:
在channel上添加確認模式:
添加監聽的,我們可以看到還有返回監聽,關閉shutdown的監聽。這裡我們選擇確認監聽:
說明:
在添加確認監聽時候,需要一個ConfirmListener listener的參數。這裡我們就使用了內部類。其中要實現兩個方法:handleAck和handleNack.
handleAck:成功監聽,handleNack失敗監聽。
其中兩個產生:long 類型的消息唯一標籤,boolean類型的是否批量。
我們在來看看消費者端:
啟動服務:
啟動消費者,我們在管控台查看:
路由exchanges列表:
隊列和路由都已經創建了。接下來,我們啟動生產者,觀察控制是否接收到應答:
我們可以看到,生產者已經列印出投遞成功的確認消息。
本節總結:
相關代碼已發布在git上,歡迎大家下載查看
系列教程持續更新中~~。歡迎大家一起學習
下節預告:
在下節中,我們將講解return消息機制
※JVM學習系列學習四
※RabbitMQ學習系列教程六:Fanout交換機的使用
TAG:凱哥java |