RocketMQ-事务消息实现原理

应用场景

目前大多数企业采用基于分布式、微服务的设计理念,将核心系统功能拆分为多个微服务。这样就会存在一条业务链路中部分请求成功,部分请求失败的问题,那么如何在分布式场景下,如何保证消息发送与业务的一致性是RocketMQ需要解决的重要问题。

相关概念

  • 分布式系统:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

  • 微服务:微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

  • 事务:程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。可以通俗理解为:就是把多件事情当做一件事情来处理。

    RocketMQ经常被用于担任金融系统的消息中间件,因此事务的重要性不言而喻

源码结构

事务实现源码分析

RocketMQ简化的结构

生产者部分

事务的实现首先需要生产者的参与,因此首先分析client的producer部分代码

public class TransactionMQProducer extends DefaultMQProducer

TransactionMQProducer实现了发送事务消息

  • 成员变量TransactionListener是发送过程的主要实现类
public interface TransactionListener {
  //执行本地事务
    LocalTransactionState executeLocalTransaction(final Message msg, final Object arg);
  //executeLo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值