RabbitMQ之訊息確認 AMQP 事務機制

2021-10-10 14:01:41 字數 932 閱讀 1745

注意,此事務非資料庫的事務概念!

//將channel設定成事務模式

- channel.

txselect()

;//提交事務

- channel.

txcommit()

;//事務回滾

- channel.

txrollback()

;

當訊息的發布者在將訊息傳送出去之後,訊息到底有沒有正確到達broker**伺服器呢?如果不進行特殊配置的話,預設情況下發布操作是不會返回任何資訊給生產者的,也就是預設情況下我們的生產者是不知道訊息有沒有正確到達broker的,如果在訊息到達broker之前已經丟失的話,持久化操作也解決不了這個問題,因為訊息根本就沒到達**伺服器,你怎麼進行持久化,那麼這個問題該怎麼解決呢?

rabbitmq為我們提供了兩種方式:

方式一:通過amqp事務機制實現,這也是從amqp協議層面提供的解決方案;

方式二:通過將channel設定成confirm模式來實現;

amqp的事務模式是怎麼使用的:

rabbitmq中與事務機制有關的方法有三個,分別是channel裡面的txselect(),txcommit()以及txrollback(),txselect用於將當前channel設定成是transaction模式,txcommit用於提交事務,txrollback用於回滾事務,在通過txselect開啟事務之後,我們便可以發布訊息給broker**伺服器了,如果txcommit提交成功了,則訊息一定是到達broker了,如果在txcommit執行之前broker異常奔潰或者由於其他原因丟擲異常,這個時候我們便可以捕獲異常通過txrollback回滾事務了。

RabbitMQ實戰 訊息確認機制之訊息的正確消費

上節中我們講了如何確保訊息的準確發布,今天我們來看看如何確保訊息的正確消費。在之前的基礎上我們對消費者 倉庫服務 進行完善。所以,首先我們將ack的方式設定為手動 spring rabbitmq host xx port 5672 username x password x listener dir...

rabbitmq訊息重新入隊和訊息確認

為了確認訊息不會丟失,rabbitmq支援message acknowledgments。乙個ack的響應會從消費端返回,告訴rabbitmq乙個特定的訊息已被接收。當rabbitmq空閒時會處理它,將它刪除。如果乙個消費者掛掉 channel被關閉 connection被關閉或者tcp 連線被關閉...

rabbitmq訊息手動確認訊息操作說明

bean public messagerecoverer messagerecoverer rabbittemplate rabbittemplate public class rejectanddontrequeuerecoverer implements messagerecoverer thr...