rocketmq事务消息源码解析

开篇

rocketmq 事务消息是常用的一种实现分布式事务弱一致性的技术方案,以rocketmq broker为事务管理器的角色,以两阶段的方式来做事务管理,本文默认你已经熟悉rocketmq的使用,我们一起做更深入的源码探讨。

我们为什么要用它

大部分技术或者说从我们现在可以接触到的来说,还都是在别人已经走的路上,既然是路那么一定有一个方向和目的,我们的目的就是为了解决分布式环境中的分布式事务问题,随着分布式的普及,系统支持横行扩容基本成为系统的基本属性,高的扩展性是我们所必须的,但是他也会带来一些问题,就是以前常用的一些的基本操作,事务和线程同步,都不在有效,我们必须也要寻找一种更高一层纬度的实现,当然这其中也设计到一个cap理论,我们的事务消息也就是一种分布式事务的实现方案

交互流程

这里只做大概的说明,他的主要思路就是大事务 = 小事务 + 异步,中间在加一些保证机制,保证这些小事务都可以成功,如果不可以成功就一起失败,主要交互如下
在这里插入图片描述
可以看出他主要是通过,mq自己回查判断,上游事务是否执行完成,来判断要不要发送消息触发下游事务,而下游事务主要通过rocketmq的对于事务可达性的保证来,不断重复调用,在一定配置内,直到下游事务返回事务执行成功。可以看出主要工作都是rocketmq来做的,由他来确保上游是否执行成功,在由他来确保下游一定执行成功,可以看出这种方式,不会对上游进行回滚,因此适合有主从概念的场景,比如支付和发短信。

说之前要了解的基础

在了解这三大步骤之前我们要知道一些基础的类

message

我们消息传递的消息体,这个是最基本的,在rocketmq中,主要有一下分类
在这里插入图片描述
他们的类关系图如下
在这里插入图片描述
可以看出message就是最基本的一个消息的定义,真正我们在broker中使用的是messageExt,它里面包含了几乎全部我们broker要处理和判断的属性,而MessageExtBrokerInner 只是messageExt的序列化实现,主要包含一个字符串,存储我们的全部属性,方便我们消息存入文件。

messageExt

我们重点说明一下messageExt这个类中属性,如下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值