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

Docker环境下跨容器的Spring Boot应用无法向Kafka发布事件如何解决

你遇到的超时错误是Kafka监听器配置的协议名称不匹配导致的,同时配置中混用了已废弃的旧版本广播参数,进一步引发了服务发现异常,可按以下步骤修复:

修复步骤

  • 修正kafka服务的环境变量配置,统一监听器协议名称,删除废弃参数
    原配置中KAFKA_LISTENERS用了INTERNAL协议名,KAFKA_ADVERTISED_LISTENERS却用了PLAINTEXT协议名,两者不匹配;同时KAFKA_ADVERTISED_HOST_NAME、KAFKA_ADVERTISED_PORT是Kafka 0.9.x版本后的废弃参数,和新的LISTENERS配置冲突,直接删除即可。修正后的kafka配置段参考:
kafka:
  image: wurstmeister/kafka
  container_name: kafka
  hostname: kafka
  ports:
    - "9092:9092"
  environment:
    KAFKA_BROKER_ID: 1
    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
    KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
  depends_on:
    - zookeeper
  • 确认目标topic已存在
    进入kafka容器执行以下命令创建topic,避免自动创建topic耗时过长导致消息超时:
kafka-topics.sh --create --topic wages-local --bootstrap-server kafka:9092 --partitions 1 --replication-factor 1
  • 调整Spring Boot Kafka生产者配置做验证
    测试阶段可以将producer的acks参数设为1,关闭幂等性配置,避免单节点Broker无副本导致的提交等待超时。

修改完配置后重启所有容器即可正常发送消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:07