Rocket MQ對事務消息的支持最好,Apache RocketMQ在4.3.0之後開始支持事務消息。纔有2PC的思想來實現提交事務消息。同時增加了一個補償邏輯來處理兩階段超時或者失敗的消息。
Rocket事務消息主要分爲兩個階段: 正常事務的發佈和提交、事務消息的補償。
1.生產者發送半消息給MQ-Server(半消息指消費者暫時不能消費的消息)
2.服務端響應消息寫入結果,半消息發送成功。
3.開始執行本地事務。
4.根據本地事務執行狀態 commit或者rollback操作
事務消息的補償流程:
1.MQ Server長時間沒收到本地事務的執行結果會像生產者發起一個確認回查的操作請求。
2.生產者收到確認回查請求後,檢查本地事務的執行狀態。
3根據檢查後結果,執行commit或者rollback。 補償階段主要用於解決生產者執行commit或者rollback時候發生超時或者報錯的情況。