Golang操作kafka遇到分区扩容消费新分区数据的问题

项目地址

该项目的README有更加详细的资料说明:

https://gitee.com/huoyingwhw/kratos_kafka

实验环境准备

我在本机使用brew安装了zookeeper与kafka:

另外需要注意,上面的项目我加了NSQ的初始化,如果本地没有启动NSQ的话会报错:

 

我本地使用docker安装了nsq系列,本地docker启动nsq或者把nsq初始化相关的代码注释掉就OK了。我推荐在本地docker安装一个nsq服务,也不费事。

segmentio/kafka-go与IMB/sarama包遇到分区扩容自动消费新分区数据的策略

实际中,使用golang操作kaka实现生产者与消费者的代码,基本上主流就是这俩包。

如果实际中遇到了kafka分区扩容(这里额外提一下,kafka只支持分区扩容不支持删分区,除非删掉原来的topic重新再建一个跟原来一样名字的topic),新分区的数据是否会自动消费的问题,这里先给出结论:

使用segmentio/kafka-go不用重启服务就会自动消费新分区的数据;使用IBM/sarama不会自动消费新分区的数据,需要手动重启消费者后才能消费到新分区的数据。

关于分区、rebalance这些知识点还有一些相关的文档,大家可以在我项目中的README中详细看看。

效果演示

详见B站视频的演示:Golang操作kafka遇到分区扩容的一个问题

posted on 2024-03-15 16:48  江湖乄夜雨  阅读(46)  评论(0编辑  收藏  举报