Apache kafka 卡夫卡制作者和消费者在不同的计算机上不是';t通信

Apache kafka 卡夫卡制作者和消费者在不同的计算机上不是';t通信,apache-kafka,apache-zookeeper,kafka-consumer-api,kafka-producer-api,Apache Kafka,Apache Zookeeper,Kafka Consumer Api,Kafka Producer Api,我用的是卡夫卡2.11-1.1.0。这是我的server.properties文件: broker.id=1 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=1 num.recovery

我用的是卡夫卡2.11-1.1.0。这是我的server.properties文件:

broker.id=1
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.1.110:2181,192.168.1.64:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
在第二台计算机上,broker.id=2。我在命令提示符中键入ipconfig,并在一台计算机上使用以太网适配器局域网连接下的IPv4地址,在另一台计算机上使用无线局域网适配器Wi-Fi下的IPv4地址,从而获得zookeeper.connect行的ip号码

我在每台计算机上都运行了这些命令(对于后面的任何人,请在运行第二台计算机之前在两台计算机上运行第一个命令):

在第一台计算机上,我制作了一个主题,并启动了一个制作人控制台:

bin\windows\kafka-topics.bat --create --zookeeper 192.168.1.110:2181 --replication-factor 2 --partitions 1 --topic test
bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181 --topic test
bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:2181 --topic test
在第二个版本中,我启动了一个消费者控制台:

bin\windows\kafka-topics.bat --create --zookeeper 192.168.1.110:2181 --replication-factor 2 --partitions 1 --topic test
bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181 --topic test
bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:2181 --topic test
当我尝试发送消息时,消费者没有收到。每台计算机上的zookeeper服务器控制台通过以下消息循环,但每个IP值对应于其各自的PC,端口号随每个循环增加一个(大约每秒一次):

在producer控制台中,一分钟后收到此错误:

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: Failed to update metadata after 60000 ms.
我该如何解决这个问题?任何帮助都将不胜感激

更新-已解决-维克多提供:

更改:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181 --topic test

致:

更新2


对于任何遵循这一点的人来说,用卡夫卡设置两台计算机——我发现这种方法并不总是有效的。我后来发现的永久解决方案是对两台计算机使用相同的IP。我使用了带有以太网连接的计算机IP,这恰好是与制作人的IP。

我认为您必须向制作人传递卡夫卡经纪人列表,而不是动物园管理员仲裁:

因此,改变这一点:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181
对这样的事情:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:9092
(我假设您正在运行Kafka服务器)

我遇到了一个类似的错误,用Spark Streaming写信给卡夫卡:


嘿,谢谢,它很管用!对于尝试进行相同设置的任何人,请将生产者代码端口和消费者代码端口都更改为9092。另外,在任何一台计算机上启动卡夫卡之前,请确保在两台计算机上都启动Zookeeper。您好@aaa,如果此设置对您有效,请随时接受我对问题的回答。谢谢你不必“非得”通过卡夫卡,Zookeeper应该可以,但使用
--Zookeeper
,但这是卡夫卡0.9之后的协议的一部分,建议在标题中使用它。我投票决定将其作为打字错误关闭。卡夫卡文档声明,默认情况下,您在9092上通过卡夫卡发送和接收消息。您已经给了Zookeeper(可能是从topics命令复制的)
bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:9092 --topic test
bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181
bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:9092