我试着用卡夫卡。 所有配置都正确完成,但当我试图从控制台产生消息时,我一直得到以下错误
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实例指定代理id。 当它在Docker环境中重启时,有时会从zookeeper获取一个新的id。 如果您的代理id大于1000,只需指定环境变量KAFKA_BROKER_ID。
使用它可以查看代理、主题和分区。
brew install kafkacat
kafkacat -b [kafka_ip]:[kafka_poot] -L
其他回答
如果你得到这样重复的错误消息:
Error while fetching metadata with correlation id 3991 : {your.topic=LEADER_NOT_AVAILABLE}
Or
Discovered group coordinator 172.25.1.2:9092 (id: 2147483645 rack: null) (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:677)
(Re-)joining group (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:509)
Group coordinator 172.25.1.2:9092 (id: 2147483645 rack: null) is unavailable or invalid, will attempt rediscovery (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:729)
Discovered group coordinator 172.25.40.219:9092 (id: 2147483645 rack: null) (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:677)
Group coordinator 172.25.1.2:9092 (id: 2147483645 rack: null) is unavailable or invalid, will attempt rediscovery (org.apache.kafka.clients.consumer.internals.AbstractCoordinator:729)
然后,你需要像这样在kafka server.properties中配置监听器:
listeners=PLAINTEXT://your.server.ip:9092
这是在Kafka 2.5.0和confluent 5.4.1平台上尝试的解决方案。
在服务器上添加侦听器设置后,问题得到解决。属性文件位于配置目录。 listener =PLAINTEXT://localhost(或您的服务器):9092 修改完成后重新启动kafka。使用版本2.11
我使用的是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
现在你应该不会看到任何问题。
我让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任务定义中的主机名
我解决这个问题的方法是这样设置监听器:
advertised.listeners = PLAINTEXT://my.public.ip:9092
listeners = PLAINTEXT://0.0.0.0:9092
这使得KAFKA代理侦听所有接口。