RocketMQ 分布式事务方案

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

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

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

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

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

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

相关推荐
bigdata-rookie1 天前
Spark 部署模式
大数据·分布式·spark
蒋士峰DBA修行之路1 天前
实验二十二 GaussDB分布式场景调优
分布式·gaussdb
青靴1 天前
轻量级 CI/CD 实战(三):Kafka消费者Docker容器化部署
分布式·docker·kafka
galaxyffang1 天前
RocketMQ 为什么性能不如 Kafka?
分布式·kafka·rocketmq
sheji34161 天前
【开题答辩全过程】以 基于Spark的药品库存可视化分析系统为例,包含答辩的问题和答案
大数据·分布式·spark
A尘埃1 天前
Spark基于内存计算的数据处理
大数据·分布式·spark
渣渣盟1 天前
Flink分布式文件Sink实战解析
分布式·flink·scala·1024程序员节
一叶飘零_sweeeet1 天前
从 Kafka 到 RocketMQ:迁移实战全攻略
分布式·kafka·rocketmq
我还可以再学点1 天前
八股文面试攻略六:分布式和集群
分布式·面试·职场和发展
曾经的三心草1 天前
RabbitMQ-面试题分析
分布式·rabbitmq