RocketMQ的事务消息是如何实现的
-
- 生产者订单系统先发送一条half消息到Broker,half消息对消费者而言是不可见的
- 再创建订单,根据创建订单成功与否,向Broker发送commit或rollback
- 并且生产者订单系统还可以提供Broker回调接口,当Broker发现一段时间half消息没有收到任何操作命令,则会主动调此接口来查询订单是否创建成功
- 一旦half消息commit了,消费者库存系统就会来消费,如果消费成功,则消息销毁,分布式事务成功结束
- 如果消费失败,则根据重试策略进行重试,最后还失败则进入死信队列,等待进一步处理