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

C#使用kafka-net连接Docker部署的Kafka时报UnresolvedHostnameException错误

问题根因

这是Kafka容器部署的经典网络配置问题:Kafka broker收到客户端的元数据请求时,会返回自身的advertised.listeners(对外广播的访问地址),你当前的docker compose没有配置该参数,默认返回的是容器内部的主机名即报错中的容器IDc60e8e54a7ca,你的Windows本地环境没有对应的hosts映射,自然无法解析该主机名。
你之前用docker exec执行生产消费命令正常,是因为命令运行在kafka容器内部,容器本身可以解析自身的主机名。

解决方案

第一步:修改docker-compose.yml配置

给kafka服务新增两个环境变量,配置监听规则和对外广播地址:

version: '2'

networks:
  app-tier:
    driver: bridge

services:
  zookeeper:
    container_name: zookeeper-server
    image: 'bitnami/zookeeper:latest'
    environment:
        - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
        - app-tier
  kafka:
    container_name: kafka-server
    image: 'bitnami/kafka:latest'
    environment:
        - ALLOW_PLAINTEXT_LISTENER=yes
        - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181
        # 新增配置开始
        - KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092
        - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
        # 新增配置结束
    networks:
        - app-tier
    ports:
      - "9092:9092"

参数说明:

  • KAFKA_CFG_LISTENERS:指定Kafka broker内部监听的地址,0.0.0.0表示监听容器内所有网卡
  • KAFKA_CFG_ADVERTISED_LISTENERS:指定Kafka对外广播的访问地址,外部客户端会用这个地址和Kafka通信,填写Windows本地可访问的127.0.0.1即可

第二步:重启容器生效配置

在docker compose文件所在目录执行以下命令,重启服务加载新配置:

docker-compose down
docker-compose up -d

重启完成后运行你的C#项目即可正常生产消息,原有C#代码无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:00