1、消息队列实现 事物流程

RocketMQ的事务消息可以认为是一个两阶段提交,在事务开始的时候发送一个半消息给Broker。

半消息就是这个消息此时对Consumer是不可见的,也不会存在正常的队列中,而是一个特除队列。发送玩半消息后,执行本地事务,根据本地事务的结果决定是向Broker发送:提交消息还是回滚消息。并且Broker会定时的向Producer反查这个事务是否成功。

RocketMQ事务消息的执行流程:

(1)Producer发送半消息到Broker中,等待响应(2)Producer执行本地事务

(3)Broker获取本地事务的结果,判断是发送消息还是回滚事务(4)Broker如果是回滚事务,则执行回滚操作并删除消息(5)Broker如果是发送消息,则把消息放到正常队列,供Consumer消费(6)Consumer拿到消息,执行本地事务(7)Consumer返回消息响应结果给Broke