我正在尝试创建一个Kafka
群集来向远程控制发送消息。我按照here所述配置了所有内容。
我在Linux red hat
机器上运行它,它使用shell工作正常。在我的Windows机器上编写quick start
教程中描述的java代码后,我收到了以下错误:
...
DEBUG kafka.client.ClientUtils$ - Successfully fetched metadata for 1 topic(s) Set(example)
...
ERROR kafka.producer.SyncProducer - Producer connection to cldExampleKafka.domain:80 unsuccessful
java.nio.channels.UnresolvedAddressException
...
at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44)
...
WARN kafka.producer.async.DefaultEventHandler - Failed to send producer request with correlation id 2 to broker 0 with data for patitions [ati,0]
java.nio.channels.UnresolvedAddressException
...
kafka.common.FailedToSendMessageException: Failed to send message after 3 tries.
我还尝试在不同的Linux机器上运行jar,但仍然收到同样的错误。
将地址更改为localhost
并在安装了kafka的计算机中将jar代码作为jar运行。
我相信它的配置,但我找不到它。
答案 0 :(得分:33)
在你的kafka server.properties
中有一个评论配置
#advertised.host.name=<Some IP>
取消注释并添加运行kafka的Linux机器的IP。
advertised.host.name=<Kafka Running Machine IP>
从客户端连接到<Kafka Running Machine IP>
这应该可以解决您的问题。
修改强>
您可以选择取消注释
#advertised.port=9092
此外,如果您正在侦听与默认端口不同的端口。
答案 1 :(得分:13)
使用
来自server.properties
取消注释
listeners=PLAINTEXT://:9092
并且
advertised.listeners=PLAINTEXT://<HOST IP>:9092
将<HOST IP>
替换为实际IP。
答案 2 :(得分:1)
尝试从本地计算机连接到kafka远程群集。
VM有一个内部(9.0.0.1)和一个外部IP(192.1.1.1)。我只能ssh内部和外部不是外在的。我对conifg / server.properties进行了这些更改:
//设置为机器的IP(使用ifconfig
或hostname -I
查找)
listeners=PLAINTEXT://192.1.1.1:9092
//设置为消费者和生产者将连接的IP
advertised.listeners=PLAINTEXT://9.0.0.1:9092
答案 3 :(得分:1)
在
config/server.properties
我把这个
listeners=PLAINTEXT://[server_ip]:9092
效果很好。
为了进行快速测试,请不要忘记在kafka-consumer命令行中使用[server_ip]。 示例:
/usr/local/kafka_2.11-2.0.0/kafka-console-consumer.sh --property print.timestamp=true --bootstrap-server [server_ip]:9092 --topic [you_topic]
希望对您有所帮助。
问候
阿里