kafka如何防止key相同的消息并发消费

最开始,我认为只用把消费者设置为单线程消费,就可以避免并发问题。
因为同一个key,分区一定相同,那么就只会被同一个消费者消费,消费者又是单线程,这样就避免了并发问题

后面发现,上述的方式没有办法处理rebalace的情况;比如一个消费组最开始只有2个消费者,topic有6个分区,key为1的message在分区3,当再增加一个消费者时,这时会发生rebalance,导致相同key的message,在消费者增加前后,分区不一致,这时可能会出现并发问题;

所以最终方案,还是需要分布式锁来避免并发问题

posted @ 2019-09-18 20:32  xsirfly  阅读(3918)  评论(0编辑  收藏  举报