Spring Kafka运行抛出UnknownHostException: 34bcfcc207e0异常如何解决?
问题原因
报错中的未知主机34bcfcc207e0是Kafka服务所在Docker容器的默认主机名,该问题由Kafka服务端的advertised.listeners配置错误导致:
- 应用启动时会按你配置的
localhost:9092地址尝试连接Kafka,首次连接可以正常打通 - 连接成功后Kafka会将自身对外宣告的访问地址
advertised.listeners返回给客户端,后续所有生产、消费请求都会转向使用这个返回的地址通信 - 如果你使用默认配置启动Docker版Kafka,
advertised.listeners默认会被设置为容器自身的hostname,也就是你看到的容器ID34bcfcc207e0,你的本地主机无法解析这个容器ID对应的IP地址,就会抛出UnknownHostException异常。
另外你配置中所有的BOOTSTRAP_SERVERS_CONFIG值不需要加http://前缀,Kafka客户端使用自定义TCP协议而非HTTP协议通信,直接填写localhost:9092即可,不过这个问题不是本次报错的诱因。
解决方案
修改Kafka启动时的环境变量,将advertised.listeners设置为本地可以正常解析的地址即可:
- 若使用
docker run命令启动Kafka,添加启动参数-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 - 若使用docker-compose编排,在kafka服务的environment配置项中添加:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
修改配置后重启Kafka容器即可解决该问题。
内容的提问来源于stack exchange,提问作者Вячеслав Чернышов
相关产品推荐
相关产品推荐

