RabbitMq學習筆記三、確認消費機制

一、目的

消息發送成功 ==》 Publisher 的Confirm 機制

消息不丟失 和 被確認消費 ==》 主要是面向消費者的確認消費而言的

 

1、是否發送成功 交換機、路由和隊列綁定構成的模型不存在時

1)設置發送消息成功時反饋回信息 connectionFactory.setPublisherReturns(true)。

2) 設置消息發送確認機制 rabbitTempate.SetConfirmCallback()

 

2、RabbitMq 服務出現宕機

在創建隊列、交換機時設置其持久化參數爲true 即durable 參數的取值爲true

創建消息時設置消息的持久化模式爲"持久化",從而保證RabbitMq服務器出現奔潰並執行重啓操作之後,隊列、交換機仍舊存在而且消息不會丟失。

MessageBuilder.withBody(message).setDeliveryMode(MessageDeliveryMode.PERSISTENT).build();

 

3、消費者在監聽消費處理消息、出現監聽失敗或者直接奔潰 ==》導致消息所在的隊列找不到對應的消息而不斷的重新入隊列,最終出現消息被重複消費

消息確認機制 ACK 模式 :

1)無須確認(NONE): APP應用更新通知

2)自動確認(AUTO) : 消費者監聽到消息時,需要發送一個 "AUTO ACK" 的反饋信息給RabbitMQ 服務器,之後將在RabbitMQ 隊列中被移除。底層實現原理是:由RabbitMq 內置的相關組件實現自動發送確認反饋信息

3)手動確認(MANUAL): 生產者將消息發送值隊列,消費者在監聽到消息的時需要手動的 "以代碼的形式" 發送一個ACK 的反饋信息給RabbitMq服務器,之後該消息將在RabbitaMQ的隊列中被移除,同時告知生產者,消息已經成功發送並且已經成功被消費者監聽消費了。

 

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