首页 文章

单独计算机上的Kafka制作人和消费者没有进行通信

提问于
浏览
2

我正在使用kafka_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地址和另一台计算机上的无线LAN适配器Wi-Fi下的IPv4地址,我获得了zookeeper.connect行的ip号 .

我在每台计算机上运行这些命令(对于跟随的人,在运行第二台计算机之前在两台计算机上运行第一个):

bin\windows\zookeeper-server-start.bat config\zookeeper.properties
bin\windows\kafka-server-start.bat config\server.properties

在第一台计算机上,我创建了一个主题并启动了一个 生产环境 者控制台:

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,并且每个循环的端口号增加一(大约每秒一次):

INFO Accepted socket connection from /192.168.1.110:55371 (org.apache.zookeeper.server.NIOServerCnxnFactory)
WARN Exception causing close of session 0x0 due to java.io.EOFException (org.apache.zookeeper.server.NIOServerCnxn)
INFO Closed socket connection for client /192.168.1.110:55371 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn)

在 生产环境 者控制台中,一分钟后收到此错误:

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.

我该如何解决?任何帮助,将不胜感激 .

UPDATE - SOLVED - Victor提供:

更改:

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-console-producer.bat --broker-list 192.168.1.110:9092 --topic test

bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:9092 --topic test

UPDATE 2

对于那些跟随这个人用Kafka设置两台计算机的人 - 我发现这种方法并不总是有效 . 我后来发现的永久解决方案是为两台计算机使用相同的IP . 我使用了以太网连接的计算机的IP,这恰好是 生产环境 者的IP .

1 回答

  • 3

    我相信你必须向 生产环境 者传递 Kafka 经纪人名单而不是动物园管理员法定人数:

    所以改变这个:

    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写信给Kafka:

    Error connecting to Zookeeper with Spark Streaming Structured

相关问题