一架梯子,一头程序猿,仰望星空!
RabbitMQ面试题 > 内容正文

RabbitMQ面试题:如何处理重复消息?(即消息幂等性保证)


处理RabbitMQ重复消息的问题,就是处理消息的业务逻辑保持幂等性,只要保持幂等性,不管来多少条重复消息,最后处理的结果都一样。

这个问题需要灵活作答,考察的是综合应用能力和经验,因为消费的场景有很多,有数据库、有缓存、有第三方接口。

提示:总体上根据不同的业务增加去重逻辑,通常就是根据业务设置一个唯一标识,通过检测这个唯一标识是否已经处理过来处理去重问题。

例如:

  1. 比如针对数据库,插入数据,可以通过唯一键,重复插入会报错,又或者插入之前先检测一下是否存在,针对更新操作,可以根据数据的状态判断是否已经处理过。
  2. 再比如redis缓存,你拿到这个消息做redis的set的操作,那就容易了,不用解决,因为你无论set几次结果都是一样的,set操作本来就算幂等操作。
  3. 再比如第三方接口,接口需要有去重能力。

推荐教程