RocketMQ事务消息
RocketMq提供的一种高级消息类型,支持在分布式场景下面保障消息生产和本地事务的一致性
- 生产者将消息发送到服务端
- 服务端将消息持久化成功后,向生产者返回ACK确认消息发送成功,此时消息状态为
待投递
,这种状态下的消息称之为半事务消息
- 生产者执行本地事务消息
- 生产者根据本地事务执行结果向服务端提交二次确认结果(Commit或Rollback)
- 二次确认结果为Commit:服务端将半事务消息状态改为可投递,投递给消费者
- 二次确认结果为Rollback:服务端回滚事务,不再将事务消息投递给消费者
- 在断网或生产者重启的情况下,服务端未收到生产端的二次消息确认或者收到的二次确认结果为Unknown状态,经过固定时间后,服务端会对生产者端进行消息回查
- 生产者收到消息回查后,检查对应消息本地事务的最终执行结果
- 生产者根据检查到的本地事务最终执行结果再次向服务端进行二次确认,服务端按照步骤4对半事务消息进行处理
参考链接
- 事务消息