我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误

WARN Error while fetching metadata with correlation id 39 : 
     {4-3-16-topic1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

Kafka版本:2.11-0.9.0.0


当前回答

在服务器上添加侦听器设置后,问题得到解决。属性文件位于配置目录。 listener =PLAINTEXT://localhost(或您的服务器):9092 修改完成后重新启动kafka。使用版本2.11

其他回答

这可能与server.properties中的advertised.host.name设置有关。

可能发生的情况是,您的生产者试图找出谁是给定分区的领导者,找出它的advertised.host.name和advertised。端口并尝试连接。 如果这些设置没有正确配置,那么可能会认为领导者不可用。

我也得到了同样的错误消息

获取关联id为39的元数据时出错: {4-3-16-topic1 = LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

解决步骤:

去C:\Windows\System32\drivers\etc\hosts 如果下面的行不存在,那么将它添加到hosts文件的末尾

127.0.0.1       localhost

打开C:\<Kafka_Config_Path>\server。属性,并在文件末尾添加

    advertised.listeners = PLAINTEXT://localhost:9092
    listeners = PLAINTEXT://0.0.0.0:9092

重新启动Kafka服务器

当我们试图订阅一个尚未创建的主题时,我们往往会收到这条消息。我们通常依赖于在部署环境中预先创建的主题,但我们有针对dockerized kafka实例运行的组件测试,每次都干净启动。

在这种情况下,我们在测试设置中使用AdminUtils来检查主题是否存在,如果不存在就创建它。有关设置AdminUtils的更多信息,请参阅另一个堆栈溢出。

上述答案中提到的广告听众可能是原因之一。其他可能的原因有:

主题可能还没有创建。你可以使用bin/kafka-topics——list——zookeeper <zookeeper ip>:<zookeeper port>来检查 检查您提供给生成器以获取元数据的引导服务器。如果引导服务器不包含关于主题的最新元数据(例如,当它丢失其zookeeper声明时)。您必须添加多个引导服务器。

另外,确保已将所发布的侦听器设置为IP:9092而不是localhost:9092。后者意味着只能通过本地主机访问代理。

当我遇到错误时,我记得在引导服务器(或代理列表)列表中使用了PLAINTEXT://<ip>:<PORT>,它工作了,奇怪的是。

bin/kafka-console-producer --topic sample --broker-list PLAINTEXT://<IP>:<PORT>

我使用docker-compose来构建使用wurstmeister/ Kafka映像的Kafka容器。在docker-compose文件中添加KAFKA_ADVERTISED_PORT: 9092属性为我解决了这个错误。