Kafka单节点集群中的consumer不消费?

Kafka单节点集群中的consumer不消费?只有把broker=0对应的服务端口起来才会消费,这是为什么?

服务配置如下:

kafka-server-start.sh $KAFKA_HOME/config/server.properties 
kafka-server-start.sh $KAFKA_HOME/config/server-1.properties
kafka-server-start.sh $KAFKA_HOME/config/server-2.properties
kafka-server-start.sh $KAFKA_HOME/config/server-3.properties

每个配置文件对应的服务端口是
server.properties 9092 broker=0
server-1.properties 9093 broker=1
server-2.properties 9094 broker=2
server-3.properties 9095 broker=3

zk都是 zookeeper.connect=server00:2181

主机名是 server00

启动后broker1,2,3不能消费
运行命令如下:

    kafka-console-producer.sh --bootstrap-server server00:9093,server00:9094,server00:9095 --topic test05
    kafka-console-consumer.sh --bootstrap-server server00:9093,server00:9094,server00:9095 --topic test05

请帮忙,谢谢

【相关推荐】



  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7719129
  • 这篇博客也不错, 你可以看下【Kafka】测试集群中Broker故障对客户端的影响
  • 除此之外, 这篇博客: [kafka]kafka中的zookeeper是做什么的?中的 3.1 处理集群中下线的Broker 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    当某个Broker节点由于故障离开Kafka群集时,则存在于该Broker的leader分区将不可用(由于客户端仅对leader分区进行读写操作)。为了最大程度地减少停机时间,需要快速找到替代的leader分区。(副本是不会进行读写的,知识作为备份)

    Controller Broker可以对失败的Broker做出响应,Controller Broker可以从Zookeeper监听(zookeeper watch)中获取通知信息,ZooKeeper 赋予客户端监控 znode 变更的能力,即所谓的 Watch 通知功能。一旦 znode 节点被创建、删除,子节点数量发生变化,或是 znode 所存的数据本身变更,ZooKeeper 会通过节点变更监听器 (ChangeHandler) 的方式显式通知客户端。

    每个 Broker 启动后,会在zookeeper的 /Brokers/ids 下创建一个临时 znode。当 Broker 宕机或主动关闭后,该 Broker 与 ZooKeeper 的会话结束,这个 znode 会被自动删除。同理,ZooKeeper 的 Watch 机制将这一变更推送给控制器,这样控制器就能知道有 Broker 关闭或宕机了,从而进行后续的协调操作。

    Controller将收到通知并对此采取行动,决定哪些Broker上的分区成为leader分区(我印象中,kafka的副本机制都是很分散的,所以选择别的broker分区上面的副本当成主leader),然后,它会通知每个相关的Broker,要么将Broker上的主题分区变成leader,要么通过LeaderAndIsr请求从新的leader分区中复制数据。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

试试在启动consumer时指定分区的方式来消费消息:
kafka-console-consumer.sh --bootstrap-server server00:9093,server00:9094,server00:9095 --topic test05 --partition