这个问题困扰了我很久。明明我在代码里面已经用某一个groupid消费了一些数据,但是
kafka-consumer-groups.sh --list --zookeeper localhost:2181这个命令却没有找到那个groupid,一开始我以为是我用java客户端创建groupid的原因,但是后面python创建的也找不到,感觉可能性不大。
百度许久,最后谷歌还是有效,参考:https://stackoverflow.com/questions/34181346/java-consumer-group-missing
原来是新的consumer是因为新的consumer API不能这样实现
然后我就这样
kafka-consumer-groups.sh --list --new-consumer --bootstrap-server localhost:9092
就可以了!
各个版本之间还是有很多坑。
但是,其实还有一个问题。就是我把kafka结合storm,以kafka作为storm的spout之后,消费的时候要设置一个consumer.clientid,那个id即使用new-consumer也找不到。这个问题还在解决,哪位大神知道了请评论一下,不胜感激!
---------------------------
在这里,对上面提到的问题做一个更新。
zkCli.sh到zookeeper里面
ls /根目录下的所有东西的时候,发现一个consumers,(ls /consumers)那里便是所有low-level consumer API的groupid。(但是没有high-level 的consumer groupid)
kafka的consumer groupid默认放在consumers,但是我在做kafkaspout的时候,把consumers zkroot设置为“annInfo”
点进去看SpoutConfig
也就是找zkRoot为annInfo的
ls /annInfo,果然我kafkaSpout的clientId都在里面啊。由于./kafka-consumer-groups.sh --list显示的都是consumers下面的,所以annInfo下面的不会显示。
现在又有一个问题了,既然low-level consumer API的位置在zookeeper里面,那high-level的有没有在里面呢,我找了找,确实没有,要是以后找到答案,继续补充。欢迎大家补充。