首页 > 其他 > 详细

rabbitmq分布式事务

时间:2021-05-31 21:24:40      阅读:20      评论:0      收藏:0      [点我收藏+]

Rabbitmq解决分布式事务的原理:可靠消息最终一致性方案

  需要保证以下三要素

      1、确认生成者一定要将消息可靠投递到MQ【采用MQ的异步confirm消息确认机制】
            

              public interface ConfirmListener {
                    /**
                     ** handleAck RabbitMQ消息接收成功的方法,成功后业务可以做的事情
                     ** 发送端投递消息前,需要把消息先存起来,比如用KV存储,接收到ack后删除
                    **/
                    void handleAck(long deliveryTag, boolean multiple)
                          throws IOException;

                  //handleNack RabbitMQ消息接收失败的通知方法,用户可以在这里重新投递消息
                   void handleNack(long deliveryTag, boolean multiple)
                         throws IOException;
            }


      2、MQ消费者能将消息正确消费,采用手动ACK模式【保证消息的幂等性】

      3、生产者和消费者事务回滚问题

一、方案

技术分享图片

3.1 整体设计思路

技术分享图片

技术分享图片

3.2 步骤1 - 可靠的消息生产记录消息发送

技术分享图片

3.3 步骤2 - 可靠消息生产(修改消息发送状态)

技术分享图片

技术分享图片

3.4 步骤3 - 可靠消息处理(正常处理)

技术分享图片

技术分享图片

技术分享图片

3.5 步骤4 - 可靠消息处理(消息重发)

技术分享图片

技术分享图片

rabbitmq分布式事务

原文:https://www.cnblogs.com/jock766/p/14832829.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!