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