RocketMQ 分布式事务方案

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

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

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

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

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

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

相关推荐
空中海2 小时前
Kafka Streams、Connect 与生态
分布式·kafka·linq
KmSH8umpK16 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第三篇
redis·分布式·wpf
KmSH8umpK19 小时前
SpringBoot 分布式锁实战:从单机锁到Redis分布式锁全覆盖,解决超卖、重复下单、幂等并发问题
spring boot·redis·分布式
weisian1511 天前
Java并发编程--51-详解RocketMQ:高可靠消息中间件的核心特性与生产实践
java·rocketmq·java-rocketmq·事务消息
KmSH8umpK1 天前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案
redis·分布式·wpf
qq_297574671 天前
RocketMQ 系列文章(高级篇第 4 篇):消息过滤、延迟消息与死信队列深度应用实战
rocketmq
长河1 天前
XXL-JOB 从本地快速上手到核心架构深度解析
分布式
juniperhan1 天前
Flink 系列第22篇:Flink SQL 参数配置与性能调优指南:从 Checkpoint 到聚合优化
大数据·数据仓库·分布式·sql·flink
juniperhan1 天前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
marsh02062 天前
41 openclaw分布式会话管理:跨服务状态同步方案
分布式·ai·编程·技术