基于MQ的分布式事务的疑问

基于MQ的分布式事务的疑问

  1. 支付服务,支付成功后,发送消息队列并且成功,但是订单服务并不一定马上消费(比如订单很多),那么支付服务那边不可能马上拿得到消息队列返回的结果吧?

  2. 既然不能马上拿得到结果,支付服务是如何得知订单服务是否成功,如果出现了异常,又如何回滚?

    这些细节并没有讲,还是存在很多漏洞。

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

登陆购买课程后可参与讨论,去登陆

1回答
凌波微步 2020-04-26 07:51:24

1、支付成功后,支付服务修改支付状态,扣减金额,然后给订单服务发送消息。支付服务不需要等待订单服务的结果。就像你对接了支付宝,支付宝扣款成功后,会给你的系统发消息,支付宝是直接扣款的,不需要你的系统的执行结果。

2、还是以支付宝为例,支付宝扣款是不依赖你的系统的执行结果的,只是给你发消息,如果你的系统一直报错,也是没有办法的,最后只能人工干预。像这种基于mq的分布式事务,如果最后达不到一致,都是要进行人工干预的。

  • 提问者 youngledo #1
    也就是消息生产这边只保证消息发送出去了,如果没有发送成功,那么支付操作就回滚,否则就跟支付这边没有任何关系了,剩下的事的就看订单方怎么处理了?
    2020-04-27 14:30:52
  • 凌波微步 回复 提问者 youngledo #2
    是的,理解正确。
    2020-04-27 15:30:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师