消息隊列MQ如何保證消息不丟失


消息隊列防止消息不丟失

1、 生產者發送消息到broker失敗;生產者使用事務消息。

2、 Broker集群主從同步失敗;兩階段提交,多數節點成功后提交。

3、 MQ異步刷盤,可能會消息丟失;改為同步刷盤。

4、 Broker發送消息到消費者失敗;消費者ack機制。

5、 MQ集群掛掉了,生產者無法發送消息到MQ;消息臨時存儲在redis、文件或數據庫中。

 

 

 

 

事務狀態為unknown狀態,MQ會循環重試4567步驟。

1-2:half機制確認MQ是否正常。

3:執行本地事務失敗(如數據庫掛了),會將消息存儲起來。MQ重試機制至本地事務成功后執行后面的操作。

6:下單支付鏈路中,如要求下單后10分鍾完成支付。MQ重試機制,下單后支付狀態為unknown,最多重試10次檢查支付狀態是否成功,成功則commit,失敗則rolllback。

 

 

 

 

 

 

 

 

 

 

 

MQ掛了,生產者把消息存盤,redis、文件或數據庫等。定時任務掃描把消息發送到恢復后的MQ中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、 增加隊列數量,多個消費者消費隊列的消息;

2、 無法動態擴容的情況下,增加topic,增加queue

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM