RocketMQ的事務訊息處理【half-message】

OkidoGreen發表於2020-11-22

處理流程

  1. producer 傳送half message到broker中;
  2. broker接收到half message後給producer傳送成功的發聵,這時,half message才算真正生成完了;
  3. producer執行本地事務;
  4. producer根據第3步得到執行本地事務的結果,向MQ進行二次確認(到底是commit還是roll back)。如果是commit就將這個half message變為消費者可以消費的訊息,此時消費者接收到這條half message。如果是roll back,那麼MQ就將這條half message丟棄掉;
  5. 如果MQ在第4步的時候,拿不到producer執行完本地事務的結果,那麼告知producer要進行回查;
  6. producer 查詢執行本地事務結果;
  7. producer根據第6步返回的結果再次執行第4步;

相關文章