我有两台机器localhost和192.168.1.110来运行两台独立的单机kafka。
(1)在localhost上,我运行:
主控台kafka_2.11-0.10.0.0bin/kafka-➜-Producer.sh --broker-list 192.168.1.110:9092 --topic test这是一条消息2016-08-24 18:15:27,441向topic test发送消息时出错: null,value: 2字节错误:包含1条记录的(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.TimeoutException:批次在向broker请求测试元数据时超时过期-0
为什么无法将消息发送到192.168.1.110的broker?我可以在消费者或生产者中直接使用代理ip吗?如果我只能使用主机名,这与advertised.host.name相关吗?那么如何设置advertised.host.name呢?这个主机名是否应该是全局可解析的(我可以使用/etc/hosts来解析主机名吗?)
(2)我编辑了/etc/hosts,让localhost指向192.168.1.110,然后运行:➜kafka_2.11-0.10.0.0bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
我可以成功地将消息发送到192.168.1.110,并在那里消费消息。
(3)我编辑了/etc/hosts,让rrlocalhost指向192.168.1.110,然后运行:➜kafka_2.11-0.10.0.0bin/kafka-console-producer.sh --broker-list rrlocalhost:9092 --topic test
然后我向rrlocalhost发送消息,出现了与(1)相同的错误。
发布于 2016-08-25 00:54:21
当然你可以直接使用ip地址。
代理配置advertised.host.name将在zookeeper中注册,生产者和消费者将获取它们作为集群元数据。如果您使用本地昵称配置它,生产者和消费者将很难与其通信。
https://stackoverflow.com/questions/39120768
复制相似问题