rocketmq事务消息

本文详细介绍了RocketMQ的事务消息处理流程,包括半消息发送、数据库更新及异常处理策略。在确保数据一致性方面,RocketMQ通过半消息机制、回查机制以及超时处理来保证事务的原子性,即使在异常情况下也能妥善处理事务状态。
摘要由CSDN通过智能技术生成

比如更新db并发送消息,由下游继续处理任务。但是无法保证更新db与发送消息同时成功。

1. rocketmq先发一个半消息(Half Msg,类似一个 Prepare 操作),这个消息是不会投递给消费者的

【如果半消息发送失败,db未更新,整个操作失败,无影响】

2. 半消息发送成功后更新db

【半消息发送成功,但此时发生异常,生产者以为失败了不会更新db。由于broker存储半消息成功了,缺迟迟等不到后续提交操作,超时后broker会询问生产者此消息要如何处理,生产者查询db,然后给broker答复】

【若db更新失败,生产者告诉broker回滚半消息】

3. db成功后提交半消息,此时投递给消费者

【若db成功但提交半消息失败,broker等不到提交操作,会触发回查】

【如果回查发生异常或者回查仍然返回"未知",或回查失败,RocketMQ 稍后会重新调度,最多会回查 15 次】

可以看到,任何异常都在考虑之内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值