我有两台机器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条记录的批处理(s )从代理请求元数据为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测试
我可以成功地将消息发送到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测试
然后我发送消息给rrlocalhost,有与(1)中相同的错误 .
1 回答
绝对可以直接使用ip地址 .
broker config
advertised.host.name
将在zookeeper中注册, 生产环境 者和消费者将把它们作为集群元数据获取 . 如果使用本地昵称配置它, 生产环境 者和消费者将很难与之通信 .