[英]Kafka - Unable to send a message to a remote server using Java
我正在尝试创建一个Kafka
集群,以将消息发送到遥控器。 我已经按照此处所述配置了所有内容。 我在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形式运行Java代码。
我相信它与配置有关,但是找不到。
在您的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
另外,如果您正在侦听的端口与默认端口不同。
与...合作
来自server.properties
取消注释
listeners=PLAINTEXT://:9092
和
advertised.listeners=PLAINTEXT://<HOST IP>:9092
将<HOST IP>
替换为实际IP。
尝试从我的本地计算机连接到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
在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]
希望对您有所帮助。
问候阿里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.