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

Kafka-无法使用Java向远程服务器发送消息,java,linux,apache-kafka,Java,Linux,Apache Kafka,我正在尝试创建一个Kafka集群来向遥控器发送消息。我已经按照描述配置了所有内容。 我在Linux-red-hat机器上运行这个程序,使用shell可以很好地工作。在我的windows机器上编写了快速入门教程中所述的java代码后,我收到了以下错误: ... DEBUG kafka.client.ClientUtils$ - Successfully fetched metadata for 1 topic(s) Set(example) ... ERROR kafka.producer

我正在尝试创建一个
Kafka
集群来向遥控器发送消息。我已经按照描述配置了所有内容。 我在
Linux-red-hat
机器上运行这个程序,使用shell可以很好地工作。在我的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.
我还尝试在不同的Linux机器上运行jar,但仍然收到相同的错误

将地址更改为
localhost
,并在安装kafka的机器上以jar的形式运行java代码


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

在您的kafka
服务器中。属性中有一个已注释的配置

#advertised.host.name=<Some IP>
另外,如果您正在侦听的端口与默认端口不同。

已使用

server.properties
取消注释

listeners=PLAINTEXT://:9092

advised.listeners=纯文本://:9092

用实际IP替换

尝试从本地计算机连接到kafka远程群集

虚拟机有一个内部IP(9.0.0.1)和一个外部IP(192.1.1.1)。我只能ssh到内部,而不能ssh到外部。我对conifg/server.properties进行了以下更改:

//设置为机器的IP(使用
ifconfig
hostname-I
查找)

//设置为消费者和生产者将连接的IP

advertised.listeners=PLAINTEXT://9.0.0.1:9092  
config/server.properties

我把这个
listeners=PLAINTEXT://[server\u ip]:9092

而且效果很好

为了快速测试,不要忘记在kafka consumer的命令行中使用[server_ip]。 例如:

我希望这能对你有所帮助。
当做
Ali

它是否也需要更改zookeeper配置?因为我仍然有问题,我必须同时提到host.name和advised.host.name才能使它工作。更详细地解释了这一点。我在server.properties中没有找到这个条目,但Dhananjay的答案对我有用。你能分享你从VM连接到kafka远程集群的实际配置吗。虚拟机有1个内部ip(9.0.0.1)和外部ip(192.1.1.1)我只能ssh到内部,而不是外部,当你执行ifconfig或hostname-i“code”时,我的conifg/server.properties//在机器中提供iplisteners=PLAINTEXT://192.1.1.1:9092//提供ip消费者和生产者将连接广告中的“代码”。listeners=PLAINTEXT://9.0.0.1:9092
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<HOST IP>:9092
listeners=PLAINTEXT://192.1.1.1:9092
advertised.listeners=PLAINTEXT://9.0.0.1:9092  
/usr/local/kafka_2.11-2.0.0/kafka-console-consumer.sh --property print.timestamp=true --bootstrap-server [server_ip]:9092 --topic [you_topic]