RocketMQ分布式事务解决方案
使用二阶段提交,半事务消息和事务回查来解决上下游数据的一致性。
事务消息发送
在一些对数据一致性有强需求的场景,可以使用RocketMQ事务消息来解决,从而保证上下游数据的一致性。
例如,A系统 --> RocketMQ --> B系统,如何保持A、B系统分布式事务的一致性?
使用二阶段提交,半事务消息和事务回查来解决上下游数据的一致性。
在一些对数据一致性有强需求的场景,可以使用RocketMQ事务消息来解决,从而保证上下游数据的一致性。
例如,A系统 --> RocketMQ --> B系统,如何保持A、B系统分布式事务的一致性?
RocketMQ 消息构成非常简单,如下图所示。
topic,表示要发送的消息的主题。
body 表示消息的存储内容
properties 表示消息属性
transactionId 会在事务消息中使用。
Message 可以设置的属性值包括:
相对于RocketMQ的Broker集群,生产者和消费者都是客户端。本小节主要描述生产者和消费者公共的行为配置。
DefaultMQProducer、TransactionMQProducer、DefaultMQPushConsumer、DefaultMQPullConsumer都继承于ClientConfig类,ClientConfig为客户端的公共配置类。客户端的配置都是get、set形式,每个参数都可以用spring来配置,也可以在代码中配置,例如namesrvAddr这个参数可以这样配置,producer.setNamesrvAddr("192.168.0.1:9876"),其他参数同理。
本文主要讲述Springboot项目如何集成RocketMQ。
RocketMQ安装步骤详见地址:
https://whwtree.com/archives/rocketmq-install.html
// 启动NameServer
cd D:\tools\rocketmq-all-5.0.0-bin-release
start bin\mqnamesrv.cmd