RocketMQ的事务消息是如何实现的?

RocketMQ使用TransactionListener接口实现事务消息。发送时先发送半消息到Broker,然后执行本地事务。若本地事务成功,通知Broker提交事务消息,否则回滚。流程包括:1.发送半消息;2.执行本地事务;3.提交或回滚事务;4.检查请求与未知状态处理。事务消息用于确保本地事务与消息发送的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 RocketMQ的事务消息是通过 TransactionListener接口来实现的。

在发送事务消息时,首先向RocketMQ Broker 发送一条‘half消息’(半消息),半消息将被存储在broker端的事务消息日志中,但是这个消息还不能被消费者消费。

接下来,在半消息发送成功后,应用程序通过执行本地事务来确定是否要提交该事务消息。

如果本地事务执行成功,就会通知RocketMQ Broker提交该事务消息,使得该消息可以被消费者消费;否则,就会通知RocketMQ Broker 回滚事务消息,该消息将被删除,从而保证消息不会被消费者消费。

拆解下来的话,主要有以下4个步骤:

1.发送半消息:应用程序向RocketMQ Broker 发送一条半消息,该消息在broker 端的事务消息日志中被标记为‘prepared’状态。

2.执行本地事务:RocketMQ会通知应用程序执行本地事务。如果本地事务执行成功,应用程序通知RocketMQ Broker提交该事务消息。

3.提交事务消息:RocketMQ 收到提交消息后,会将该消息的状态从,准备改为(committed),并使该消息可以被消费者消费。

4.回滚事务消息:如果本地事务执行失败,应用程序通知RocketMQ Broker 回滚该事务,RocketMQ将该消息的状态从‘prepared’改为‘rollback’,并将该消息从事务消息日志中删除,从而保证该消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z.jiaminf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值