rabbitmq 保證傳送訊息可靠性 方案

2022-07-22 20:42:17 字數 1043 閱讀 5341

**傳送訊息(傳送端-交換機-佇列)**總結:只有當訊息確認ack為true且未執行失敗**方法時,才保證傳送端訊息已經成功傳送!

執行失敗**方法時,說明訊息已經傳送到(broker)交換機,交換機路由到佇列出現了問題。此時需要我們自己來解決

傳送端資訊成功到交換機確認機制:

前提:開啟訊息確認

connectionfactory.setpublisherconfirms(

true

);

如果成功,會給傳送端乙個為true的ack,表示傳送成功!

如果失敗,會給傳送端乙個為false的ack,表示傳送失敗!

**如下:

/*** 傳送端是否傳送到交換機

*/public

class

rabbitmqconfirm implements rabbittemplate.confirmcallback

}交換機資訊成功路由到佇列確認機制:

前提:開啟訊息確認

connectionfactory.setpublisherconfirms(

true

); 開啟失敗**

rabbittemplate.setmandatory(

true

);

如果成功,則不會呼叫失敗**方法!

如果失敗,則會呼叫失敗**方法!

**如下:

/*** 交換機是否傳送到佇列

*/public

class

rabbitmqreturnconfirm implements rabbittemplate.returncallback

}

依賴pom:

org.springframework.boot

spring-boot-starter-amqp

2.0.4.release

rabbitmq 均勻傳送訊息

在rabbitmq client中 如不加限制 當某一client端連到server端時 server會將大部分資料傳送到該客戶端 後面連線上的client 將接收不到資料 造成某些客戶端任務繁重 某些客戶端十分清閒 可在client 端的channl 加上引數 readchannel.basicq...

RabbitMQ 如何保證訊息不丟失?

rabbitmq 如何保證訊息不丟失?rabbitmq一般情況很少丟失,但是不能排除意外,為了保證我們自己系統高可用,我們必須作出更好完善措施,保證系統的穩定性。下面來介紹下,如何保證訊息的絕對不丟失的問題,下面分享的絕對乾貨,都是在知名網際網路產品的產線中使用。1.訊息持久化 2.ack確認機制 ...

RabbitMQ保證訊息的順序性

當我們的系統中引入了mq之後,不得不考慮的乙個問題是如何保證訊息的順序性,這是乙個至關重要的事情,如果順序錯亂了,就會導致資料的不一致。比如 業務場景是這樣的 我們需要根據mysql的binlog日誌同步乙個資料庫的資料到另乙個庫中,加如在binlog中對同一條資料做了insert,update,d...