activemq消费者抛异常怎么办?

发布于 2022-09-05 08:59:05 字数 75 浏览 22 评论 0

假如有订单和商品模块,订单下单成功后通过mq通知商品模块进行库存修改,如果商品模块在执行过程中抛异常了,是要对通知订单模块对订单回滚吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挽心 2022-09-12 08:59:05

我认为 订单和商品模块要求强一致(订单创建成功,则库存即刻减少,反之亦然)
分俩种情况讨论:

  1. 订单内部调用商品模块

    开始事务-->生成订单-->调用减少库存-->提交事务。此时,保证了强一致性
    
  2. 有另一个服务C从外部调用 订单 和 商品

    商品服务需要提供回滚接口(库存+操作),总体上调用顺序如下:
    调用商品服务-->调用订单服务(这个可以多次尝试)-->失败调用回滚接口-->提示用户失败
    

    第二种情况已经涉及到分布式事务的相关问题了,此时如果你认为不要求强一致性,可以去查看相关资料,你用MQ也可以考虑我提议的调用顺序,先减库存,保证有库存,再发消息生成订单,通过多次重试,持久化消息等机制保证订单创建成功

夏日落 2022-09-12 08:59:05

订单下单成功并减库存应该放在同个事务里,要回滚就一起回滚,要重试一起重试,通过消息去触发,应该考虑下本身这个设计是否有问题

倾城°AllureLove 2022-09-12 08:59:05

强一致就看看分布式事务
不然可以通过订单系统的补单机制,补到商品模块成功为止.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文