跳至主要內容
MQ 常见问题合集
本文内容

为什么要使用 MQ?

MQ 主要有下面几个作用,这也是为什么要使用 MQ 的原因:

  • 异步处理:当业务需要处理的逻辑非常多的时候,可以 把一些用户不关心的、耗时的逻辑丢到 MQ 中做异步处理,从而尽快将结果返回给用户;
  • 业务解耦:在我的抽奖系统中,可以将抽奖和发奖解耦开来,用户抽奖后,直接返回奖品信息,具体的奖品类型是什么,应该怎么发放,后续由 MQ 去执行,最后将结果持久化到 DB 即可;
  • 流量削峰:当并发量过大时,可以利用 MQ 进行缓解。在我的校园社区项目中,发送系统通知就是用 MQ 来削峰的,避免在点赞、评论、私信消息过多时,影响系统性能。

AruNi_Lu大约 6 分钟中间件消息队列
如何保证消息幂等
本文内容

1. 对幂等的理解

幂等是业务的一个特性,在 MQ 中,对于不满足幂等性的业务,在消息重复消费时,会导致数据不一致、或数据错乱的现象

例如一个支付业务,消费者需要消费扣款的消息,如果该消息出现了重复消费的情况,但最终的业务结果是只扣款了一次,那么就说这个扣款业务具有 幂等性

再用我们常见的 HTTP 为例,GET、PUT、DELETE 方法都是幂等的,因为它们不管执行多少次,都和执行一次效果一样,对业务结果都是无影响的。而 POST 就不是幂等的,它会创建多个资源。


AruNi_Lu大约 4 分钟中间件消息队列