美文网首页rocketMq理论与实践
rocketMq-事务消息介绍

rocketMq-事务消息介绍

作者: 晴天哥_王志 | 来源:发表于2018-03-22 17:17 被阅读70次

事务消息介绍

rocketMq在4.x版本里面的事务消息功能似乎不是完整的,在阅读的源码过程中发现只有其实宏观上看可以区分为两个阶段

阶段一:prepare阶段,该阶段主要发一个消息到rocketMq,但是该消息只存储在commitLog当中,在consumeQueue中不可见。

阶段二:commit/rollback阶段,该阶段主要是在commit阶段重新生成一个message(prepare阶段消息的克隆),保存到commitLog当中,同时会将该消息保存至consumeQueue当中。

事务消息举例

分布式事务的场景 rocketMq处理分布式消息的过程

说明:

    1、先发送prepared消息,也就是步骤1中的发送转账消息

    2、执行本地操作,也就是步骤4中的本地事务

    3、发送commit消息,也就是步骤中5中的发送确认消息

rocketMq的交互流程

rocketMq分布式事务的过程

说明:

    1、参考阿里云的消息队列截图

事务消息的producer

事务性消息生产者

说明:

    1、分布式事务producer多了两个东西,本地事务执行函数,提供给远程回调的回调函数(基本没用)。

事务消息的prepare阶段


prepare消息

说明:参见DefaultMQProducerImpl类

未拷贝至consumeQueue

说明:参见DefaultMessageStore类

    1、prepare消息不回拷贝至consumeQueue,也就是消息不可见。

事务消息的commit阶段

commit阶段查找prepare消息并提交commitLog

说明:参见EndTransactionProcessor类。

    1、EndTransactionProcessor是事务消息commit的入口

放置consumeQueue

说明:参见DefaultMessageStore类

    1、rocketMq在消费commit的事务消息的时候会放置到consumeQueu当中

    2、放置到consumeQueue以后就可以被消费了

相关文章

  • rocketMq-事务消息介绍

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

  • RocketMQ-事务消息

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

  • RocketMq-事务消息原理

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

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

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

  • rocketMq-延迟消息介绍

    在rocketMq的消息体系中,很重要的一个消息体系是延迟消息,以前需要定时去实现的任务现在有rocketMq自身...

  • rocketmq事务消息入门介绍

    说明 周五的时候发了篇:Rocketmq4.3支持事务啦!!!,趁着周末的时候把相关内容看了下,下面的主要内容就是...

  • rocketmq事务消息入门介绍

    引出分布式事务相关内容 这里主要是想说明下,是什么背景下面产生了此类问题。 首先我们来说说事务,说道事务,首先让我...

  • RocketMQ-消息发送

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

  • RocketMQ-延时消息

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

  • RocketMQ-异步消息

    异步消息 生产者

网友评论

    本文标题:rocketMq-事务消息介绍

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