RocketMQ实现分布式事务
创始人
2025-01-08 00:33:12
0

RocketMQ的分布式事务消息功能,在普通消息基础上,支持二阶段的提交。将二阶段提交和本地事务绑定,实现全局提交结果的一致性。

1、生产者将消息发送至RocketMQ服务端。

2、RocketMQ服务端将消息持久化成功之后,向生产者返回Ack确认消息已经发送成功,此时消息被标记为"暂不能投递",这种状态下的消息即为半事务消息。

3、生产者开始执行本地事务逻辑。

4、生产者根据本地事务执行结果向服务端提交二次确认结果(Commit或是Rollback),服务端收到确认结果后处理逻辑如下:

二次确认结果为Commit:服务端将半事务消息标记为可投递,并投递给消费者。

二次确认结果为Rollback:服务端将回滚事务,不会将半事务消息投递给消费者。

5、在断网或者是生产者应用重启的特殊情况下,若服务端未收到生产者提交的二次确认结果,或服务端收到的二次确认结果为Unknown未知状态,经过固定时间后,服务端将对消息生产者集群中任一生产者实例发起消息回查。

6、生产者收到消息回查后,需要检查对应消息的本地事务执行的最终结果。

7、生产者根据检查到的本地事务的最终状态再次提交二次确认,服务端仍按照步骤4对半事务消息进行处理。

注意问题
消息类型
事务消息仅支持在MessageType为Transaction的主题使用,即事务消息只能发送至类型为事务消息的主题中。

消息消费
RocketMQ事务消息保证生产者本地事务和下游消息发送事务的一致性,但不保证消息消费结果和上游事务的一致性。因此需要下游业务自行保证消息正确处理,建议消费端做好消费重试。

中间状态
RocketMQ事务消息一致性为最终一致性,即在消息提交到下游消费端处理完成之前,下游和上游事务之间的状态会不一致。因此,事务消息仅适合能接受异步执行的场景。

事务超时
RocketMQ事务消息的生命周期存在超时机制,即半事务消息被生产者发送服务端后,如果在指定时间内服务端无法确认提交或者回滚状态,则消息默认会被回滚。

相关内容

热门资讯

第2分钟操作!哈糖大菠萝辅助,... 第2分钟操作!哈糖大菠萝辅助,微信财神十三章辅助安装包(辅助)切实有挂平台(哔哩哔哩)1)微信财神十...
九分钟练习!方片十三张脚本,新... 九分钟练习!方片十三张脚本,新九哥智能辅助软件(辅助)切实真的有脚本(哔哩哔哩)1、新九哥智能辅助软...
第1分钟积累!白银胡乐白银版辅... 第1分钟积累!白银胡乐白银版辅助,新世界辅助器免费下载(辅助)一直有挂辅助(哔哩哔哩)该软件可以轻松...
第3分钟阶段!易趣麻将辅助器,... 第3分钟阶段!易趣麻将辅助器,新永和辅助(辅助)竟然真的是有下载(哔哩哔哩)1、起透看视 易趣麻将辅...
第十分钟经验!福州十八扑外卦,... 第十分钟经验!福州十八扑外卦,小程序财神十三脚本(辅助)真是真的有辅助器(哔哩哔哩)1、第十分钟经验...
两分钟项目!江西闲娱脚本,三哥... 两分钟项目!江西闲娱脚本,三哥玩摆头注可以控制(辅助)一贯是真的插件(哔哩哔哩)1、三哥玩摆头注可以...
第6分钟教程书!全托中至窝龙拿... 第6分钟教程书!全托中至窝龙拿好牌,财神十三张有挂辅助吗(辅助)一贯有挂辅助器(哔哩哔哩)1、每一步...
一分钟法门!钱塘十水三挂件,小... 一分钟法门!钱塘十水三挂件,小程序财神十三张脚本(辅助)一贯是有修改器(哔哩哔哩)1、小程序财神十三...
八分钟手筋!微乐透视辅助工具,... 八分钟手筋!微乐透视辅助工具,新卡农辅助透视(辅助)都是真的是有工具(哔哩哔哩)微乐透视辅助工具脚本...
七分钟积累!科乐天天踢有没有挂... 七分钟积累!科乐天天踢有没有挂作必弊,金虎爷辅助(辅助)切实是有安装(哔哩哔哩)1、完成科乐天天踢有...