请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如果订单系统给用户系统发送mq成功了,然后订单系统也落了它自己的库,但是用户系统执行对应的操作失败了。这时候怎么办?

老师,你好。
微服务中,如果订单系统给用户系统发送mq成功了,然后订单系统执行剩下的业务逻辑,那么整个订单系统中的流程走完了,订单系统也落了它自己的数据,事务也提交了,但是用户系统突然执行对应业务逻辑失败了。这时候怎么回滚订单库中的事务?

正在回答 回答被采纳积分+3

2回答

麻辣牛蛙真好吃 2021-04-10 16:06:03

用户系统要先多次retry。报警。人工干预。

也可以自动触发回滚,就是生产多个消息,去回滚之前多个数据。发到其他的消息队列里面。可以标记优先级给每个消息.

1 回复 有任何疑惑可以回复我~
  • 对于一部分非关键的业务,放在消息的后面,如果出错了,就及时报警,采用人工干预,往往的最简单直接的。
    retry的前提的是没有业务逻辑上的错误(例如购买商品,库存不足这种,属于业务逻辑上的失败流程)。
    所以,开始处理前先进行业务逻辑验证很重要。
    回复 有任何疑惑可以回复我~ 2021-04-20 14:02:15
大漠风 2019-07-08 07:14:35

这就是在分布式系统中处理事务的逻辑,每个系统只负责自己的流程,订单系统保证订单处理完成,用户系统处理自己支付逻辑。
如果用户系统处理支付流程失败了,那就由用户系统处理自己的错误,如果错误无法修复,那就触发一个订单失败的流程,发给订单系统。

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信