可以在消费者或制作人中使用kafka broker ip吗?

时间:2016-08-24 10:28:20

标签: apache-kafka

我有两台机器localhost和192.168.1.110来运行两台独立的单机kafka。

(1)在localhost,我运行:

➜kafka_2.11-0.10.0.0bin / kafka-console-producer.sh --broker-list 192.168.1.110:9092-topic test 这是一条消息 [2016-08-24 18:15:27,441] ERROR使用key发送消息到主题测试时出错:null,值:2个字节,带错误:(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.TimeoutException:包含1条记录的批处理由于超时请求来自代理的元数据for test-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)中相同的错误。

1 个答案:

答案 0 :(得分:1)

绝对可以直接使用ip地址。

broker config "minimum-stability": "dev", "prefer-stable" : true 将在zookeeper中注册,生产者和消费者将把它们作为集群元数据获取。如果使用本地昵称配置它,生产者和消费者将很难与之通信。