美文网首页
RocketMq-事务消息原理

RocketMq-事务消息原理

作者: 麦大大吃不胖 | 来源:发表于2020-12-18 10:04 被阅读0次

事务消息原理

by shihang.mai

rocketMq用的是2pc

rocketMq事务消息原理
  1. producer发送消息前,先开启事务,并设置回调方法
  2. 发送一个半消息(实际是完全的msg,这里只是一个概念),broker将msg保存到Topic:half-messgae,即保存到磁盘上,然后返回ack给producer
  3. producer收到确认后,执行本地的n个方法
  • 如果事务执行成功,通知broker清除half-messgae队列消息和磁盘的消息,并将msg放到真正的Topic中。
    如果事务执行失败,通知broker清除那么broker清除half-messgae队列消息和磁盘的消息。
  • 如果事务执行时间较长,那么broker会有一个定时任务,回调producer设置的回调方法,
    如果回调方法返回成功,那么和上面执行成功一样的逻辑。
    如果回调方法返回失败,清除half-messgae队列消息和磁盘的消息。
    如果返回unknow,那么定时任务之后再回调一次
    1. 当定时任务回调时,连接不上producer,重试几次后,还是不行那么直接撤销 2.连上 producer ,但是每次都是返回unknow,多次后,也会自动撤销

使用时核心代码:

producer.setTransactionListener(new TransactionListener() {
            @Override
            public LocalTransactionState executeLocalTransaction(Message message, Object o) {
                //执行本地事务
                /**
                 * 回滚 LocalTransactionState.ROLLBACK_MESSAGE;
                 * broker定时检查producer事务状态 LocalTransactionState.UNKNOW;
                 * 成功 LocalTransactionState.COMMIT_MESSAGE
                 */
                //
                // LocalTransactionState.ROLLBACK_MESSAGE;
                //LocalTransactionState.UNKNOW;
                return LocalTransactionState.COMMIT_MESSAGE;
            }

            @Override
            public LocalTransactionState checkLocalTransaction(MessageExt messageExt) {
                //broker端回调监测本地事务
                return LocalTransactionState.COMMIT_MESSAGE;
            }
        });

rocketMq顺序消费

rocketMq顺序消费场景

相关文章

  • RocketMq-事务消息原理

    事务消息原理 by shihang.mai rocketMq用的是2pc producer发送消息前,先开启事务,...

  • RocketMQ-事务消息

    一、事务消息的引出 以购物场景为例,张三购买物品,账户扣款 100 元的同时,需要保证在下游的会员服务中给该账户增...

  • rocketMq-事务消息介绍

    事务消息介绍 rocketMq在4.x版本里面的事务消息功能似乎不是完整的,在阅读的源码过程中发现只有其实宏观上看...

  • 消息队列之RocketMQ-事务消息

    1、从本地事务到分布式事务 我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之...

  • RockMq事务消息原理

    场景: 通过mq 进行分布式事务的一致性控制,参考转账事务原理 目的: 保持本地事务和mq发送的原子性 过程: ...

  • RocketMQ

    1️⃣架构原理 本着不重复造轮子的原则,这里有一篇很好的文章RocketMQ-架构原理,对RocketMQ的基本概...

  • RocketMQ事务消息

    抽空扒一下RocketMQ的事务消息,看看具体的实现,版本4.6.0。 基本原理 RocketMQ的事务消息实现是...

  • 消息队列事务型消息原理浅析

    原创声明:本文系作者原创,谢绝个人、媒体、公众号或网站未经授权转载,违者追究其法律责任。 前言 在金融级分布式架...

  • RocketMQ-消息发送

    简介 本文通过问题入手,介绍下RocketMQ的消息发送逻辑是怎么样的。消息发送的大体逻辑图如下: 问题 首先我们...

  • RocketMQ-延时消息

    一、延时消息的使用 使用比较简单,指定message的DelayTimeLevel即可。示例代码如下: 目前roc...

网友评论

      本文标题:RocketMq-事务消息原理

      本文链接:https://www.haomeiwen.com/subject/grhtwktx.html