kafka 如何不消费重复数据?比如扣款,我们不能重复的扣?

其实还是得结合业务来思考我这里给几个思路

比如你拿个数据要写库你先根据主键查一下如果这数据都有了你就别插入 

,update 一下好吧

比如你是写 Redis,那没问题了反正每次都是 set,天然幂等性

比如你不是上面两个场景那做的稍微复杂一点你需要让生产者发送每条数据 

的时候里面加一个全局唯一的 id,类似订单 id 之类的东西然后你这里消费 

到了之后先根据这个 id 去比如 Redis 里查一下之前消费过吗如果没有消 

费过你就处理然后这个 id  Redis。如果消费过了那你就别处理了 

证别重复处理相同的消息即可

比如基于数据库的唯一键来保证重复数据不会重复插入多条因为有唯一键约束 

重复数据插入只会报错不会导致数据库中出现脏数据

posted @ 2020-11-28 17:00  咔啡  阅读(368)  评论(0编辑  收藏  举报