卡夫卡中没有匹配的侦听器错误的领导者经纪人

时间:2018-08-22 11:48:51

标签: go apache-kafka kafka-consumer-api

此卡夫卡错误是什么意思?

  

[2018-08-22 11:40:49,429]警告[Consumer clientId = consumer-1,   groupId = console-consumer-62114] 1个分区具有领导者经纪人   没有匹配的侦听器,包括[topicname-0]   (org.apache.kafka.clients.NetworkClient)

我在运行时得到它:

./kafka-console-consumer.sh --topic topicname --bootstrap-server localhost:9094

当尝试阅读本主题时,我在golang程序中遇到一些错误:

  

2018/08/22 11:44:12 ReadOffsetWithRetryOnError conn错误:<拨打tcp   :0:connect:连接被拒绝> kafka0:9094主题:0

代码段:

conn, err := kafka.DialLeader(context.Background(), "tcp", ip, getTopic(topic), 0)
                if err != nil {
                    log.Println("ReadOffsetWithRetryOnError conn error: <", err, "> ", ip, " topic:", topic)
                }

这很奇怪,因为在阅读不同主题时,它同时运行良好。

更多错误日志:

  

/kafka-topics.sh-描述--zookeeper本地主机:2181 --topic   topicname主题:indexBlock PartitionCount:1
  ReplicationFactor:1配置:           主题:topicname分区:0领导者:-1复制:1002 Isr:1002

7 个答案:

答案 0 :(得分:4)

  

[2018-08-22 11:40:49,429]警告[Consumer clientId = consumer-1,groupId = console-consumer-62114] 1个分区的领导者经纪人没有匹配的侦听器,包括[topicname-0](org .apache.kafka.clients.NetworkClient)

如果您尝试运行多个使用者并且kafka主题仅包含一个分区,也会发生此错误。通常,一个使用者应映射一个分区。如果您使用两个使用者,那么kafka主题中应该有2个分区。

我尝试设置kafka connect群集,并严重用力过头以解决此问题。希望对别人有帮助。

答案 1 :(得分:1)

我认为我的问题是我正在运行2个实例,而没有为复制设置任何特殊设置。 (可能没有复制吗?)然后我删除了一个代理。一些主题停止工作。

答案 2 :(得分:1)

就我而言,我在测试Kafka故障转移时遇到此错误。我放下1 Kafka,并希望将消息写入其他Kafka

问题是,当我需要将主题replication-factor设置为1时,将其设置为2。

奖金:检出为两个Kafka创建主题的目录,您将了解为什么:-)

答案 3 :(得分:0)

就我而言,我在将我的kafka集群从v2.0更新到v2.4时遇到了此错误。原因是server.properties文件中的log.dirs配置设置错误。因为我没有注意到不同节点的磁盘名称不同,而且在log.dirs设置中磁盘名称不匹配。

答案 4 :(得分:0)

jumping_monkey在检查目录方面的好处是有帮助的。对我来说,我正在使用Bitnami Kafka进行部署。第一次部署时,我的掌舵值并不是config。我想将保留时间更改为几分钟,并设置为:

config: |-
  log.retention.minutes=10

这导致log.dirs目录从/bitnami/kafka/data切换到/tmp/logs

基本上,数据存储在Kafka代理上的位置会导致错误显示。

答案 5 :(得分:0)

我在 docker 容器中运行 Kafka 时遇到了这个问题。

以下解决方案有助于解决该问题。

正如 @coldkreap 在此答案的评论中所提到的:https://stackoverflow.com/a/58067985/327862

<块引用>

kafka 代理信息在重启之间保持,因为 wurstmeister/kafka 图像创建一个名为“kafka”的卷。如果你跑 docker volume ls 你会看到一个 kafka 卷。删除该卷并 您将能够重新创建主题等。

如果使用 docker-compose,您可以运行以下命令来删除容器及其关联的卷:

docker-compose down -v

docker-compose rm -sv

答案 6 :(得分:-1)

我遇到了这个问题,我通过创建一个新的代理并启动来解决了这个问题。之后,您必须重新启动不同的使用者,生产者等。