在0.10的kafka中,使用bootstrap.servers启动控制台消费者,无法消费消息为啥

你很可能填的是zookeeper的地址(端口一般是2181)。0.10需要使用broker的地址(端口一般是9092)。此外,你可以把debug log打开,如果是连接有问题,kafka client会打印debug log。
■网友
如果是0.10版本的console producer,最好确认下是否有消息在持续生产,否则新的consumer启动默认从最新位移处读取,也可以加上--from-beginning试试。


■网友
加上--new-consumer
■网友
跟你遇到相同的问题了,请问最后是怎么解决的?
■网友
0.10版本kafka的kafka-console-consumer.sh 允许选择新/旧版本的消费者进行消息的消费。新旧消费者与集群的通讯机制不同:
旧消费者通过与zookeeper 集群通讯获取topic 信息,从而完成partition 的分配和后续消费行为;新消费者则通过与kafka broker 节点通讯获取topic 信息,并通过consumer coordinator 完成partition 的分配和负载均衡。
因此:如果你配置的bootstrap.servers 为broker 地址,脚本认为你选择了新消费者,此时需要额外带上--new-consumer 参数;如果你配置的是zookeeper 地址,脚本认为你选择了旧消费者,此时不需要额外附带参数。

■网友
以python为例,用的kafka包:
集群Kakfa下的生产者:
Kafkasvr="10.30.17.73:9092 10.30.17.74:9092 10.30.17.75:9092"producer=KafkaProducer(bootstrap_servers=kafkasvr.split()) 【在0.10的kafka中,使用bootstrap.servers启动控制台消费者,无法消费消息为啥】 集群Kakfa下的消费者
Kafkasvr=“10.30.17.73:9092 10.30.17.74:9092 10.30.17.75:9092"consumer=KafkaConsumer(topic, group_id=kafka_groupid, bootstrap_servers=kafkasvr.split(), api_version=(0,10))
(1)消费者只修改bootstrap_servers为多个节点,若没有用api_version就会报NoBrokersAvailable异常;
(2)只改消费者不改生产者,可能造成无法消费不到的情况;
(3)参数bootstrap_servers必须是list类型,元素为字符串,否则Kafka Exception:Failed to update metadata after 60.0 secs.


    推荐阅读