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

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


当前回答

我知道这是很久以前发布的,我想分享我是如何解决它的。 因为我有我的办公室笔记本电脑(VPN和代理配置)。 我检查了环境变量NO_PROXY

> echo %NO_PROXY%

返回空值 现在我已经设置了NO_PROXY与localhost和127.0.0.1

> set NO_PROXY=127.0.0.1,localhost  

如果您想追加现有值,则

> set NO_PROXY=%NO_PROXY%,127.0.0.1,localhost  

在这之后,我重新启动了zookeeper和kafka 工作起来很有魅力

其他回答

我使用的是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

现在你应该不会看到任何问题。

这是我在config/server中添加的。属性,这解决了我的问题类似上述问题。希望这有助于,它在服务器中有很好的文档。属性文件,在修改此文件之前,请尝试阅读和理解。 advertised.listeners =明文:/ / < your_kafka_server_ip >: 9092

加上这个,因为它可能会帮助其他人。一个常见的问题可能是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配置的示例

以我为例,它在家里工作得很好,但在办公室里,当我连接到办公室网络时,它就不行了。

所以修改了config/server.properties 监听器=明文://:9092 to监听器=明文://localhost:9092

在我的例子中,我是在描述消费者群体时得到的

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