关于activemq场景问题

bangdengmian9784 2020-09-22 02:50:11
假如有个场景 客户下订单业务,与库存业务 订单业务通过MQ通知库存扣减
订单业务会先查询是否有库存,有的话发送MQ到库存系统

问题是 : 库存那里出了问题 ,一直没有消费消息, 这就意味着一直有库存 。 订单那边查询到有库存就一直在扣减,其实库存早就没了 只是都存着消息里 。 有这个场景吗? 怎么破
...全文
4900 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
破碎漂流瓶 2020-09-25
  • 打赏
  • 举报
回复
引用 9 楼 KeepSayingNo 的回复:
你针对库存要做预占啊,不是库存就是一个数在那里。库存有:总库存,占用库存,可用库存,冻结库存等
你的说法其实是正确的,只不过可能需要重构而已
KeepSayingNo 2020-09-23
  • 打赏
  • 举报
回复
库存中心都出问题了,怎么会查到有库存? 一般目前都是分布式系统,库存中心实例肯定会部署到N多台服务器上,一台服务器挂了,不影响其他的服务器提供服务
破碎漂流瓶 2020-09-23
  • 打赏
  • 举报
回复
或许也可以考虑,在发送消息之前建立一个存在内存中的虚拟库存,可以存在redis里;但也需要有锁的机制,查询操作都可以通过一次虚拟库存判断
破碎漂流瓶 2020-09-23
  • 打赏
  • 举报
回复
消费,就意味着异步,并发下,就可能会出现你说的情况,那么需要查询时出发强制消费,但是强制消费的前提会去关注消息是否存在,并发查询时,也会出现强制消费的库存和实际库存有误差,需要在强制消费时加锁
bangdengmian9784 2020-09-23
  • 打赏
  • 举报
回复
引用 1 楼 zzxiaoma 的回复:
订单业务会先查询是否有库存,有的话发送MQ到库存系统 。怎么查询是否有库存,如果通过消息,应该还是返回不了信息
查询可以通过api 不一定通过消息吧? 毕竟微服务还提供API,是即时的 。 通过消息查询库存 ,这不太现实吧 ,通过消息怎么做到即时 ,这是我的理解 不知道对不对
KeepSayingNo 2020-09-23
  • 打赏
  • 举报
回复
你针对库存要做预占啊,不是库存就是一个数在那里。库存有:总库存,占用库存,可用库存,冻结库存等
bangdengmian9784 2020-09-23
  • 打赏
  • 举报
回复
引用 5 楼 KeepSayingNo 的回复:
库存中心都出问题了,怎么会查到有库存?

一般目前都是分布式系统,库存中心实例肯定会部署到N多台服务器上,一台服务器挂了,不影响其他的服务器提供服务
就是库存中心正常运行 也会存在消息堆积的情况吧 堆积就意味查询库存与实际有出入 实际剩余库存=刚查询的库存-消息堆积库存<0
bangdengmian9784 2020-09-23
  • 打赏
  • 举报
回复
引用 4 楼 破碎漂流瓶 的回复:
或许也可以考虑,在发送消息之前建立一个存在内存中的虚拟库存,可以存在redis里;但也需要有锁的机制,查询操作都可以通过一次虚拟库存判断
这个可行 我也想到用这种来实现 可就是啰嗦点 商品够多管理起来就越容易出错
zzxiaoma 2020-09-22
  • 打赏
  • 举报
回复
订单业务会先查询是否有库存,有的话发送MQ到库存系统 。怎么查询是否有库存,如果通过消息,应该还是返回不了信息

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧