Half(Prepare) Message: 指暫時不能傳遞的消息。當消息成功發送到MQ服務器,但服務器沒有收到來自生產者的消息的第二個確認,則該消息被標記爲「臨時不可交付」。此狀態中的消息稱爲半提交消息(Prepare消息)。服務器
Message Status Check: 在網絡斷開或生產者應用程序從新啓動,可能致使丟失第二個確認事務的消息。當MQ服務器發現一條消息長時間保持爲半提交消息轉態時,它將向消息生產者發送一個請求,檢查消息的最終狀態(提交或回滾)。網絡
RocketMQ的事物執行流程以下圖所示: 架構
RocketMQ的事務性消息設計架構總覽以下圖: 設計
如圖所示,爲了屏蔽存儲的底層實現,全部事務消息操做都集中在事務服務接口上。RocketMQ提供了一個它本身實現的默認存儲系,咱們使用事務橋實現事務性存儲邏輯,而不是直接修改RocketMQ的存儲層。