如何处理消费过程中的重复消费

用幂等性解决重复消息问题

一个幂等操作的特点是,其任意多次执行所产生的影响均与一次执行的影响相同。

几种常用的设计幂等操作的方法:
  1. 利用数据库的唯一约束实现幂等
  2. 为更新的数据设置前置条件
  3. 记录并检查操作

为什么消息队列不实现Exactly once ?

  • 消费端在pull消息是需要检测该消息是否被消费过,拉低消费速度影响性能
  • 消即使实现了,consumer再回ACK的时候也可能出现失败导致重复消费

如何保证消息的顺序性

  • topic层面无法保证,只有在队列层面或partition层面才能保证
  • 全局严格顺序,只能将队列数设置为1,生产消费都为1
  • 局部严格顺序,指定队列来发送消息,一致性哈希算法可以保证,相同Key 的消息总是发送到同一个队列上,这样可以保证相同 Key 的消息是严格有序的。

results matching ""

    No results matching ""