kafka怎样保证不重复消费

此问题其实等价于保证消息队列消费的幂等性

主要需要结合实际业务来操作:

  • ⽐如你拿个数据要写库,你先根据主键查⼀下,如果这数据都有了,你就别插⼊了,update ⼀下好吧。
  • ⽐如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。
  • ⽐如你不是上⾯两个场景,那做的稍微复杂⼀点,你需要让⽣产者发送每条数据的时候,⾥⾯加⼀个全局唯⼀的 id,类似订单 id 之类的东⻄,然后你这⾥消费到了之后,先根据这个 id 去⽐如 Redis ⾥查⼀下,之前消费过吗?如果没有消费过,你就处理,然后这个 id 写 Redis。如果消费过了,那你就别处理了,保证别重复处理相同的消息即可。
  • ⽐如基于数据库的唯⼀键来保证重复数据不会重复插⼊多条。因为有唯⼀键约束了,重复数据插⼊只会报错,不会导致数据库中出现脏数据。

回复

我来回复
  • 暂无回复内容