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遇到分区扩容的一个问题