MST

星途 面试题库

面试题:消息队列RocketMQ中事务消息处理机制的大致流程是什么

请阐述RocketMQ事务消息从发送端发起事务消息,到最终确认或回滚这一过程中,主要涉及哪些阶段以及各阶段的主要操作。
11.9万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试
  1. 发送half消息阶段
    • 生产者向RocketMQ Broker发送Half消息(也叫预备消息)。
    • Broker收到Half消息后,将其持久化,并返回成功响应给生产者。此时消息对消费者不可见。
  2. 执行本地事务阶段
    • 生产者在收到Half消息发送成功响应后,执行本地事务逻辑。
    • 根据本地事务执行结果,向Broker发送Commit(本地事务执行成功)或Rollback(本地事务执行失败)指令。
  3. 消息状态检查阶段
    • 如果Broker长时间未收到生产者的Commit或Rollback指令,Broker会主动发起消息状态检查请求给生产者。
    • 生产者收到检查请求后,查询本地事务状态,并根据状态再次向Broker发送Commit或Rollback指令。
  4. 消息最终处理阶段
    • 若Broker收到Commit指令,将Half消息标记为可投递状态,消费者可消费该消息。
    • 若Broker收到Rollback指令,删除Half消息,消费者不会收到该消息。