Apache kafka 我能';使用脚本时,我不会向卡夫卡生成数据,但我可以列出脚本中的主题

Apache kafka 我能';使用脚本时,我不会向卡夫卡生成数据,但我可以列出脚本中的主题,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,各位,局域网中有一个虚拟服务器,ip是192.168.18.230,我的机器ip是192.168.0.175。 今天,我尝试使用我的机器(192.168.0.175)向我的虚拟服务器(192.168.18.230)发送一些消息,使用Kafka console producer $ bin/kafka-console-producer.sh --broker-list 192.168.18.230:9092 --topic test 但有点不对劲。问题描述如下: [2017-04-10 17:2

各位,局域网中有一个虚拟服务器,ip是
192.168.18.230
,我的机器ip是
192.168.0.175
。 今天,我尝试使用我的机器(
192.168.0.175
)向我的虚拟服务器(
192.168.18.230
)发送一些消息,使用Kafka console producer

$ bin/kafka-console-producer.sh --broker-list 192.168.18.230:9092 --topic test
但有点不对劲。问题描述如下:

[2017-04-10 17:25:40,396] ERROR Error when sending message to topic test with key: null, value: 6 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-0 due to 1568 ms has passed since batch creation plus linger time
但是,当我使用
kafka topics
脚本列出主题时,它会起作用:

$ bin/kafka-topics.sh --list --zookeeper 192.168.18.230:2181

这个问题困扰了我很长一段时间,有人能帮我解决吗?

如果你有一个正在运行的zookeeper实例,你当然可以询问主题列表。然而,你似乎没有卡夫卡经纪人


您可能有一个zookeeper正在运行,但没有Kafka。

您的Kafka制作人可能正在无法访问运行Kafka代理的虚拟机的机器上运行

此外,代理端口不仅应该是开放的,而且必须由代理负责,即您的Kafka代理的(公布的)侦听器必须具有您的虚拟机IP(可以从您的Kafka生产者运行的位置访问IP,因为虚拟机可以有多个IP,并且没有规则规定所有IP都可以访问)

例如,您的虚拟机有两个IP
1.2.3.4
4.3.2.1
,而您在另一台机器上的生产者指向
1.2.3.4
,您必须首先能够ping和telnet到此IP

接下来,您必须在Kafka broker中的播发侦听器中具有此IP
1.2.3.4

advertised.listeners=PLAINTEXT://1.2.3.4:9092
您应该仅将此IP设置为Kafka Producer中的
引导服务器


您还应该确保该端口不仅对
localhost
127.0.0.1
开放,例如,当您执行
netstat
时,它不应该只有
localhost:9092
127.0.0.1:9092
,它应该使用任何本地地址0.0.0.0或您的IP
1.2.3.4:9092

非常感谢您的回答,但我使用了命令“netstat-nlp | grep 9092”来确保kafka进程在我的虚拟服务器中运行,另一方面,我在虚拟服务器中使用了kafka的命令product and consume命令来测试它是否正常运行。确保您已打开端口9092。我已打开端口9092…我确定。。。条件是我在虚拟机中测试生产者和消费者。像一个终端输入“123”,另一个终端可以输出“123”。但是当我在我的虚拟机上运行消费者,在自己的机器上运行生产者时,当我输入“123”时,我的虚拟机无法输出“123”,错误就像问题一样……你的卡夫卡经纪人在哪台机器上运行?首先,您是否可以从您位于
192.168.0.175
的计算机实际到达代理的端口
192.168.18.230:9092
?您的
netstat-nlp | grep9092
命令是在您的虚拟机上运行的,因此它无助于回答我的第一个问题。你能分享netstat的输出吗?另外,您可以共享您的代理的配置文件aka
server.properties
?我想你的问题类似于和/或。