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

ita*_*ied 17 java linux apache-kafka

我正在尝试创建一个Kafka集群来向远程控制发送消息.我按照此处的描述配置了所有内容.我在一Linux red hat台机器上运行它,它使用shell工作正常.在quick start我的Windows机器上编写教程中描述的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.
Run Code Online (Sandbox Code Playgroud)

我也尝试在不同的Linux机器上运行jar,但仍然收到同样的错误.

localhost在安装kafka的机器中将地址更改为Java代码并将其作为jar运行.

我相信配置的东西,但我找不到它.

sha*_*zin 33

在您的kafka中server.properties有一个注释配置

#advertised.host.name=<Some IP>
Run Code Online (Sandbox Code Playgroud)

取消注释并添加运行kafka的Linux机器的IP.

advertised.host.name=<Kafka Running Machine IP>
Run Code Online (Sandbox Code Playgroud)

并从客户端连接到<Kafka Running Machine IP>这应该解决您的问题.

编辑

您可以选择取消注释

#advertised.port=9092
Run Code Online (Sandbox Code Playgroud)

此外,如果您正在侦听与默认端口不同的端口.


小智 16

与之合作

来自server.propertiesUncomment

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

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

替换<HOST IP>为实际IP.