RocketMQ 分布式事务方案

事务消息 (half 半消息机制) + 事务反查机制

在第一步发送的 half 消息(在事务提交之前,对于消费者来说,这个消息是不可见的

那么,如何做到写入消息但是对用户不可见呢?

RocketMQ 事务消息的做法是:如果消息是 half 消息,放进特殊的消费队列,然后 改变主题 为 RMQ_SYS_TRANS_HALF_TOPIC。然后 RocketMQ 会开启一个定时任务,从 Topic 为 RMQ_SYS_TRANS_HALF_TOPIC 中拉取消息进行消费,根据生产者组获取一个服务提供者发送回查事务状态请求,根据事务状态来决定是提交或回滚消息。

如果没有从第 5 步开始的 事务反查机制 ,如果出现网路波动第 4 步没有发送成功,这样就会产生 MQ 不知道是不是需要给消费者消费的问题,他就像一个无头苍蝇一样

MQ Server 指向系统 B 的操作已经和系统 A 不相关了,也就是说在消息队列中的分布式事务是------本地事务和存储消息到消息队列才是同一个事务 。这样也就产生了事务的最终一致性 ,因为整个过程是异步的,每个系统只要保证它自己那一部分的事务就行了

相关推荐
JH307312 小时前
《Redis 经典应用场景(一):缓存、分布式锁与限流》
redis·分布式·缓存
熙客13 小时前
Elasticsearch:分布式搜索引擎数据库
分布式·elasticsearch·搜索引擎
Hello.Reader15 小时前
Spark RDD 编程从驱动程序到共享变量、Shuffle 与持久化
大数据·分布式·spark
小鹿学程序18 小时前
搭建hadoop集群
大数据·hadoop·分布式
web3.088899918 小时前
淘宝(全量)商品详情 API 的分布式请求调用实践
分布式
lijun_xiao200918 小时前
SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式-学习笔记-1
分布式·spring cloud·rabbitmq
二宝15219 小时前
黑马商城day8-ES01
分布式·微服务·架构
shepherd12619 小时前
破局延时任务(下):Spring Boot + DelayQueue 优雅实现分布式延时队列(实战篇)
java·spring boot·分布式
昊衡科技19 小时前
在多阶段松弛实验中使用分布式光纤传感量化局部和非局部岩石变形
分布式·分布式光纤传感·ofdr
夫唯不争,故无尤也1 天前
分布式训练一站式入门:DP,DDP,DeepSpeed Zero Stage1/2/3(数据并行篇)
分布式