1. 程式人生 > 其它 >訊息佇列MQ如何保證訊息不丟失

訊息佇列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