RocketMQ 分佈式事務消息過程分析

  • Half Message(半消息)

是指暫不能被Consumer消費的消息。Producer 已經把消息成功發送到了 Broker 端,但此消息被標記爲暫不能投遞狀態,處於該種狀態下的消息稱爲半消息。需要 Producer

對消息的二次確認後,Consumer才能去消費它。

  • 消息回查

由於網絡閃段,生產者應用重啓等原因。導致 Producer 端一直沒有對 Half Message(半消息) 進行 二次確認。這時Brock服務器會定時掃描長期處於半消息的消息,會主動詢問 Producer端 該消息的最終狀態(Commit或者Rollback),該消息即爲 消息回查

 

  1. A服務先發送個Half Message給Brock端,消息中攜帶 B服務 即將要+100元的信息。
  2. 當A服務知道Half Message發送成功後,那麼開始第3步執行本地事務。
  3. 執行本地事務(會有三種情況1、執行成功。2、執行失敗。3、網絡等原因導致沒有響應)
  4. 如果本地事務成功,那麼Product主動向Brock服務器發送Commit,這樣B服務就可以消費該message。
  5. 如果本地事務失敗,那麼Product主動向Brock服務器發送Rollback,那麼就會直接刪除上面這條半消息。
  6. 如果因爲網絡等原因遲遲沒有返回失敗還是成功,那麼會執行RocketMQ的回調接口,來進行事務的回查(此時由Brock主動發送5)。

詳見:淺入淺出-RocketMQ https://juejin.im/post/5de3c8026fb9a07194761641

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章