You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Go的Sarama库编写Kafka生产者遇域名解析错误求助

问题原因及解决方案

问题根源

你遇到的lookup b92bf8cba740: no such host错误,是因为Docker中的Kafka容器默认把自身的容器ID作为对外告知的地址(advertised.listeners配置项)。当你的Go客户端通过localhost:9092连接到Kafka后,Kafka会把这个容器ID地址返回给客户端,而宿主机无法解析这个内部容器ID,因此出现DNS查找失败的错误。

修复步骤

1. 停止并移除现有Kafka容器

docker stop kafka-container
docker rm kafka-container

2. 重新启动Kafka容器,指定正确的对外访问地址

添加ADVERTISED_LISTENERS环境变量,让Kafka告知客户端使用宿主机的localhost:9092进行通信:

docker run -d \
  --name kafka-container \
  -p 9092:9092 \
  --link vigilant_sammet:zookeeper \
  -e ZOOKEEPER_HOST=zookeeper \
  -e ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
  ubuntu/kafka:3.1-22.04_beta

3. 重新运行你的Go生产者代码

此时客户端就能正确获取到Kafka的可访问地址,消息应该可以正常发送。

补充说明

你的Go代码本身没有问题,核心问题出在Kafka容器的网络配置上。ADVERTISED_LISTENERS是Kafka的关键配置,它决定了客户端实际用来和Kafka通信的地址,必须设置为客户端(这里是宿主机)能够直接访问的地址。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:52:17