RocketMQ消息的事務架構設計

1. 生產者執行本地事務,修改訂單支付狀態,並且提交事務

2. 生產者發送事務消息到broker上,消息發送到broker上在沒有確認之前,消息對於consumer是不可見狀態

3. 生產者確認事務消息,使得發送到broker上的事務消息對於消費者可見

4. 消費者獲取到消息進行消費,消費完之後執行ack進行確認

5. 這裏可能會存在一個問題,生產者本地事務成功後,發送事務確認消息到broker上失敗了怎麼辦?這個時候意味着消費者無法正常消費到這個消息。所以RocketMQ提供了消息回查機制,如果事務消息一直處於中間狀態,broker會發起重試去查詢broker上這個事務的處理狀態。一旦發現事務處理成功,則把當前這條消息設置爲可見