消息队列使用场景疑惑

现在有一个账户钱包变动记录表,这种有必要用队列实现么?
多谢各位指点,我写了个简单的demo欢迎指点:https://github.com/liuzhongsh...

阅读 2.5k
4 个回答

消息队列:解耦削峰异步
这3大场景你可以思考一下用不用的到,有没有必要用

消息队列里的数据是用来消费的,消费完还是要存到库里做持久化。

有没有必要用,得看你们具体的使用场景。

像这种时效性要求不高的操作,是可以使用队列,但是引入队列会增大系统的复杂性,而且引入了消息系统必定会需要对数据做幂等性,对于钱包变动表这种敏感信息,流水对不上对用户影响会非常大的,如果用户流水变动不是非常频繁,可以不需要队列操作

如楼上所言,消息队列的数据最终还是需要进行持久化处理了,更不用说 账户钱包变动记录表 这种资金数据,最终还是需要入库的,但是需要考虑一个问题,就是在 入库消耗 会有个时间差。

场景:

  1. 用户 A 有帐户有 10 元
  2. 消息队列有 10 条记录待消耗,每条需要将帐户减 1 元
  3. 队列消耗了 7 条,那么余额还有 3 元
  4. 此时购买某个价值 2 元的商品

那这个时候用记可以继续购买么?
A. 如果可以购买,余额可能为负数
B. 入队列消耗,余额不足时提示失败,影响用户体验

当然这个问题可以使用其它方式来解决,不过不在本次讨论范围之内

可以使用队列异步处理,带来的后果是不能即时反馈用户,如果你的场景是需要对用户即时反馈(yes/no),建议有限度的使用或者使用其他方案

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题