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

2022-09-02 02:20:12

我正在尝试创建一个群集以将消息发送到远程控件。我已经按照此处所述配置了所有内容。我在一台机器上运行这个,它使用shell工作正常。在我的Windows计算机上按照教程中所述编写Java代码后,我收到了以下错误:KafkaLinux red hatquick start

...
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,但仍然收到相同的错误。

将地址更改为并在安装 kafka 的机器中将 java 代码作为 jar 运行是可行的。localhost

我相信它与配置有关,但我找不到它。


答案 1

在您的 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

此外,如果您在与默认端口不同的端口上进行侦听。


答案 2

曾合作

来自 取消注释server.properties

listeners=PLAINTEXT://:9092

advertised.listeners=PLAINTEXT://<HOST IP>:9092

替换为实际 IP。<HOST IP>


推荐