RocketMQ 如何实现分布式消息事务
- Producer 向 Broker 发送半消息
- Producer 收到半消息发送成功的响应。此时消息是“不可投递”状态,无法被消费端消费
- Producer 处理本地事务,并根据事务是否成功执行向 Broker 发送 Commit 或 Rollback 指令
- 如果 Broker 收到 Commit 指令,则将半消息标记为正常消息,此时消费者可以消费。如果 Broker 收到 Rollback 指令,则将半消息丢弃
- 如果 Broker 迟迟收不到 Producer 的二次确认,则会主动通过 Producer 查询半消息的执行情况