我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误
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
我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误
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
当前回答
这个警告(在0.10.2.1中)的另一种可能是,你试图对一个刚刚创建的主题进行投票,而这个主题分区的领导者还不可用,你正在进行领导者选举。
在主题创建和轮询之间等待一秒钟是一种变通方法。
其他回答
在服务器上添加侦听器设置后,问题得到解决。属性文件位于配置目录。 listener =PLAINTEXT://localhost(或您的服务器):9092 修改完成后重新启动kafka。使用版本2.11
对于我来说,我没有为Kafka实例指定代理id。 当它在Docker环境中重启时,有时会从zookeeper获取一个新的id。 如果您的代理id大于1000,只需指定环境变量KAFKA_BROKER_ID。
使用它可以查看代理、主题和分区。
brew install kafkacat
kafkacat -b [kafka_ip]:[kafka_poot] -L
这是我在config/server中添加的。属性,这解决了我的问题类似上述问题。希望这有助于,它在服务器中有很好的文档。属性文件,在修改此文件之前,请尝试阅读和理解。 advertised.listeners =明文:/ / < your_kafka_server_ip >: 9092
这个警告(在0.10.2.1中)的另一种可能是,你试图对一个刚刚创建的主题进行投票,而这个主题分区的领导者还不可用,你正在进行领导者选举。
在主题创建和轮询之间等待一秒钟是一种变通方法。
加上这个,因为它可能会帮助其他人。一个常见的问题可能是advertised.host.name配置错误。在Docker中,使用Docker -compose设置KAFKA_ADVERTISED_HOST_NAME中的服务名称将不起作用,除非你也设置了主机名。docker-compose。yml例子:
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
hostname: kafka
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
上面没有hostname: kafka可以在尝试连接时发出一个LEADER_NOT_AVAILABLE。 您可以在这里找到一个工作docker-compose配置的示例