分布式系统中的事务可以使用TCC(Try、Confirm、Cancel)、2pc来解决分布式系统中的 消息原子性

RocketMQ 4.3+提供分布事务功能,通过 RocketMQ 事务消息能达到分布式事务的最终一致

RocketMQ实现方式:

Half Message:预处理消息,当broker收到此类消息后,会存储到RMQ_SYS_TRANS_HALF_TOPIC的消息消费队列中

检查事务状态:Broker会开启一个定时任务,消费RMQ_SYS_TRANS_HALF_TOPIC队列 中的消息,每次执行任务会向消息发送者确认事务执行状态(提交、回滚、未知),如果是未 知,Broker会定时去回调在重新检查。

超时:如果超过回查次数,默认回滚消息。

也就是他并未真正进入Topic的queue,而是用了临时queue来放所谓的half message,等提 交事务后才会真正的将half message转移到topic下的queue。