说一下 RocketMQ 中关于事务消息的实现?
·
说一下 RocketMQ 中关于事务消息的实现?
面试
RocketMQ的事务消息可以认为是一个两阶段提交,在事务开始的时候发送一个半消息给Broker。 半消息就是这个消息此时对Consumer是不可见的,也不会存在正常的队列中,而是一个特除队列。发送玩半消息 后,执行本地事务,根据本地事务的结果决定是向Broker发送:提交消息还是回滚消息。并且Broker会定时的向 Producer反查这个事务是否成功。 RocketMQ事务消息的执行流程:
(1)Producer发送半消息到Broker中,等待响应
(2)Producer执行本地事务
(3)Broker获取本地事务的结果,判断是发送消息还是回滚事务
(4) Broker如果是回滚事务,则执行回滚操作并删除消息
(5)Broker如果是发送消息,则把消息放到正常队列,供Consumer消费
(6)Consumer拿到消息,执行本地事务
(7)Consumer返回消息响应结果给Broker
更多推荐




所有评论(0)