消息事务

消息事务
RocketMQ 就很好的⽀持了消息事务,让我们来看⼀下如何通过消息实现事务。
第⼀步先给 Broker 发送事务消息即半消息,半消息不是说⼀半消息,⽽是这个消息对消费者来说不可⻅,然后发送成功后发送⽅再执⾏本地事务。
再根据本地事务的结果向 Broker 发送 Commit 或者 RollBack 命令。并且 RocketMQ 的发送⽅会提供⼀个反查事务状态接⼝,
如果⼀段时间内半消息没有收到任何操作请求,那么 Broker 会通过反查接⼝得知发送⽅事务是否执⾏成功,然后执⾏Commit 或者 RollBack 命令。
如果是 Commit 那么订阅⽅就能收到这条消息,然后再做对应的操作,做完了之后再消费这条消息即可。
如果是 RollBack 那么订阅⽅收不到这条消息,等于事务就没执⾏过。
可以看到通过 RocketMQ 还是⽐较容易实现的,RocketMQ 提供了事务消息的功能,我们只需要定义好事务反查接⼝即可。
在这里插入图片描述

可以看到消息事务实现的也是最终⼀致性。
最⼤努⼒通知
其实我觉得本地消息表也可以算最⼤努⼒,事务消息也可以算最⼤努⼒。
就本地消息表来说会有后台任务定时去查看未完成的消息,然后去调⽤对应的服务,当⼀个消息多次调⽤都失败的时候可以记录下然后引⼊⼈⼯,或者直接舍弃。这其实算是最⼤努⼒了。
事务消息也是⼀样,当半消息被commit了之后确实就是普通消息了,如果订阅者⼀直不消费或者消费不了则会⼀直重试,到最后进⼊死信队列。其实这也算最⼤努⼒。
所以最⼤努⼒通知其实只是表明了⼀种柔性事务的思想:我已经尽⼒我最⼤的努⼒想达成事务的最终⼀
致了。
适⽤于对时间不敏感的业务,例如短信通知。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值