我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误
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
当前回答
我让kafka作为Docker容器运行,类似的消息充斥在日志中。 KAFKA_ADVERTISED_HOST_NAME被设置为'kafka'。
在我的例子中,错误的原因是在“kafka”容器本身中缺少“kafka”的/etc/hosts记录。 因此,例如,在'kafka'容器中运行ping kafka将失败,使用ping: bad address 'kafka'
在Docker中,这个问题可以通过指定容器的主机名来解决。
实现它的选项:
Docker run——hostname… Docker运行-add-host… docker-compose中的主机名 AWS EC2任务定义中的主机名
其他回答
当我们试图订阅一个尚未创建的主题时,我们往往会收到这条消息。我们通常依赖于在部署环境中预先创建的主题,但我们有针对dockerized kafka实例运行的组件测试,每次都干净启动。
在这种情况下,我们在测试设置中使用AdminUtils来检查主题是否存在,如果不存在就创建它。有关设置AdminUtils的更多信息,请参阅另一个堆栈溢出。
对我来说,这是由于配置失误造成的 Docker端口(9093) Kafka命令端口"bin/ Kafka -console-producer.sh——broker-list localhost:9092——topic TopicName" 我检查了我的配置匹配端口,现在一切正常
我使用的是kafka_2.12-0.10.2.1:
vi problem / server . properties
加到下面一行:
listeners=PLAINTEXT://localhost:9092
不需要更改广告。当它拾取值时监听器 从STD侦听器属性。
代理将向生产者和消费者发布主机名和端口。如果没有设置,
如果配置了“监听器”,则使用该值
否则,它将使用从java.net.InetAddress.getCanonicalHostName()返回的值。
停止Kafka代理:
bin/kafka-server-stop.sh
重新启动代理:
bin/kafka-server-start.sh -daemon config/server.properties
现在你应该不会看到任何问题。
我尝试了这里列出的所有建议。对我有用的是去服务器。属性和添加:
port = 9092
advertised.host.name = localhost
将监听器和advertised_listeners注释掉。
我也得到了同样的错误消息
获取关联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服务器