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

Docker Compose部署Kafka后命令行生产者发消息挂起无报错如何解决

问题根因&解决方案

1. 最直接的问题:docker exec 参数缺失

你当前执行生产者命令的docker exec只加了-t(分配伪终端)参数,没有加-i(保持标准输入打开),导致你输入的内容根本没有传递给容器内的控制台生产者程序,自然不会有响应。把命令改成带-it参数即可:

docker exec -it root_kafka_1 bash /kafka/bin/kafka-console-producer.sh --topic test_topic --bootstrap-server kafka:9092

输入消息后按回车就能正常写入,按Ctrl+C可退出生产者程序。

2. 补充配置优化

如果修改参数后仍然有异常,你可以在docker-compose的Kafka环境变量中补充监听器规则,避免部分版本Debezium Kafka镜像默认绑定规则异常:

version: '2'
services:
  zookeeper:
    image: debezium/zookeeper:1.5
    ports:
     - 2181:2181
     - 2888:2888
     - 3888:3888
  kafka:
    image: debezium/kafka:1.5
    ports:
     - 9092:9092
    links:
     - zookeeper
    environment:
     - ZOOKEEPER_CONNECT=zookeeper:2181
     # 新增监听器配置
     - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
     - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
     - ADVERTISED_HOST_NAME=kafka

修改配置后重启容器即可生效。

效果验证

执行生产者命令写入消息后,可以新开终端执行消费者命令验证消息是否写入成功:

docker exec -it root_kafka_1 bash /kafka/bin/kafka-console-consumer.sh --topic test_topic --bootstrap-server kafka:9092 --from-beginning

正常情况下能看到你之前发送的My first event消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:09:00