各位,在局域网中有一个虚拟服务器,它的ip地址是 192.168.18.230
,我的机器ip是 192.168.0.175
. 今天,我试着用我的机器( 192.168.0.175
)向我的虚拟服务器发送一些消息( 192.168.18.230
),Kafka游戏机制作人
$ 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
这个问题困扰了我很长一段时间,有谁能帮我解决吗?
2条答案
按热度按时间6gpjuf901#
如果您有一个zookeeper示例正在运行,那么您当然可以询问主题列表。然而,似乎你没有Kafka经纪人可用。
你也许有一个Zookeeper在跑步,但Kafka没有。
bvn4nwqk2#
您的kafka生产者可能正在无法访问运行kafka代理的虚拟机的计算机上运行。
此外,代理端口不仅应该是开放的,而且还必须由代理负责,即您的kafka代理的(公布的)侦听器必须具有您的虚拟机ip(从您的kafka生产者运行的位置可以访问ip,因为vm可以有多个ip,并且没有规则规定所有ip都可以访问)。
例如,您的虚拟机有两个IP
1.2.3.4
以及4.3.2.1
你的制作人在另一台机器上指向1.2.3.4
,您必须首先能够ping和telnet到此ip。接下来,你必须拥有这个ip
1.2.3.4
在你的Kafka经纪人的广告听众中。您应该将此ip设置为您的
bootstrap.servers
你的Kafka制作人。您还应该确保端口不只是对
localhost
或者127.0.0.1
比如说,当你netstat
,它不应该只是localhost:9092
或者127.0.0.1:9092
,它应该使用任何本地地址0.0.0.0或您的ip地址1.2.3.4:9092