繁体   English   中英

Kafka-无法使用Java将消息发送到远程服务器

[英]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(使用ifconfighostname -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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM