Kafka:如何连接kafka-console-consumer来获取远程代理主题内容?

rai*_*rai 6 amazon-ec2 apache-kafka kafka-consumer-api kafka-producer-api apache-zookeeper

我在ec2上的一台机器上设置了一个kafka zookeeper和3个代理,端口为9092..9094,我正在尝试使用另一台机器上的主题内容.端口2181(zk),9092,9093和9094(服务器)对消费者机器开放.我甚至可以做一个bin/kafka-topics.sh --describe --zookeeper 172.X.X.X:2181 --topic remotetopic给我的东西

主题:remotetopic PartitionCount:1 ReplicationFactor:3配置:主题:remotetopic分区:0领导者:2个副本:2,0,1 Isr:2,0,1 Blockquote

但是当bin/kafka-console-consumer.sh --zookeeper 172.X.X.X:2181 --from-beginning --topic remotetopic我得到的时候

警告从代理[id:0,host:localhost,port:9092] 获取主题[Set(remotetopic)]的相关ID为0的主题元数据失败(kafka.client.ClientUtils $)java.nio.channels.ClosedChannelException

为什么消费者试图从localhost读取?是否有任何选项或命令行或默认文件从中读取; 我可以改变它吗?

任何帮助,将不胜感激!

小智 7

有同样的问题.通过按照kafka配置(config/server.properties)中的注释指示设置属性'advertised.host.name'并重新启动kafka服务器来修复它.


Suk*_*aar 5

我遇到了同样的问题,我正在使用kafka 0.11,并且在我的Ubuntu VM和Windows 10的使用者中启动了生产者和代理。

我改变了(没有评论)

advertised.listeners=PLAINTEXT://your.host.name:9092
Run Code Online (Sandbox Code Playgroud)

至

advertised.listeners=PLAINTEXT://<myActual IP address>:9092
Run Code Online (Sandbox Code Playgroud)

例:

advertised.listeners=PLAINTEXT://192.168.150.150:9092
Run Code Online (Sandbox Code Playgroud)

从服务器/代理端的文件config / server.properties中获取(例如,在我的情况下是Ubuntu VM)


Dar*_*gue 0

我已经以类似(甚至更复杂)的方式设置了 Kafka 和 Zookeeper,并且 kafka-console-consumer.sh 确实按照宣传的方式工作。

这很可能是一个配置错误的 Kafka 实例(它在服务器配置中指定了它的 Zookeeper 节点)。

检查Kafka配置。默认情况下,如果未指定 Zookeeper 实例,则假定为单个 localhost 实例。否则,必须使用“server.1”... 2 等约定来定义 Zookeeper 实例(建议/要求至少三个以获得适当的仲裁)。