Kafka 启动成功
bootstrap.servers 也写对了
但程序仍然报错
TimeoutException: Failed to update metadata
你 telnet 了 bootstrap 地址,能通 ,
但 Kafka 客户端就是连不上。
问题原因是Kafka 返回给客户端的"真实 broker 地址"不可达。
Kafka 启动时会对外广播一个地址:advertised.listeners
客户端流程是:
-
先连 bootstrap.servers
-
Kafka 回应:"真正的数据节点在 172.18.0.3:9092"
-
客户端尝试连 172.18.0.3
-
结果这个地址是 Docker 内网 / 内部 IP → 连不上
于是就卡死。
日志里如果看到这种地址:Connecting to node 1 at 172.18.0.3:9092
而你的程序根本访问不了这个网段,
那就是 advertised.listeners 映射问题
然后你就可以去改映射文件:
C:\Windows\System32\drivers\etc\hosts
例如映射关系是:127.0.0.0为kafka
那就在host后面加上:
# Kafka broker mapping
127.0.0.1 kafka
注意一定要管理员身份改(改不动看我另外一篇帖子)
改完之后需要运行:ipconfig /flushdns
刷新,就可以了
然后你ping kafka,会出现Pinging kafka [127.0.0.1],就说明成功的ping通了