Python 巨蟒、卡夫卡和码头工人——卡夫卡·苏美尔一直悬而未决

Python 巨蟒、卡夫卡和码头工人——卡夫卡·苏美尔一直悬而未决,python,docker,apache-kafka,kafka-consumer-api,kafka-producer-api,Python,Docker,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,我有以下docker compose文件: version: '3.1' services: postgres_db: image: postgres restart: always environment: POSTGRES_USER: admin POSTGRES_PASSWORD: admin POSTGRES_DB: default_db ports: - 5

我有以下docker compose文件:

  version: '3.1'

  services:
    postgres_db:
      image: postgres
      restart: always
      environment:
        POSTGRES_USER: admin
        POSTGRES_PASSWORD: admin
        POSTGRES_DB: default_db
      ports:
        - 54320:5432
    zookeeper:
      image: wurstmeister/zookeeper
      ports:
        - "2181:2181"
    kafka:
      image: wurstmeister/kafka
      ports:
        - "9092:9092"
      environment:
        KAFKA_ADVERTISED_HOST_NAME: kafka
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        KAFKA_CREATE_TOPICS: "test:1:1"
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock
使用
docker compose up
运行后,从终端输出看一切正常。 我启动python控制台并运行以下行:

kp=KafkaProducer(引导服务器=['localhost:9092'],api_版本=(0,10),
值\序列化程序=λx:
转储(x).编码('utf-8'))
kc=KafkaConsumer('test',bootstrap_servers=['localhost:9092'],api_version=(0,10),group_id=None,auto_offset_reset='earliest',
value_反序列化器=lambda json_data:json.load(json_data.decode('utf-8'))
数据={“测试”:“测试”}
发送(主题=“测试”,值=数据)
有关kc中的消息:
打印(message.value)

然而,在运行此命令之后,控制台只是挂起,看起来好像消息已被使用/生成。你知道这里出了什么问题吗?谢谢

您需要在容器中运行Python代码并设置

bootstrap_servers=['kafka:9092']
或者你需要在你的主机上向客户宣传卡夫卡

KAFKA_ADVERTISED_HOST_NAME: localhost 
您还可以阅读关于
HOSTNAME\u命令的使用的wurstmeister自述文件


我还建议在测试生产者和消费者时分别运行生产者和消费者

你能从cmd与卡夫卡沟通吗?默认脚本卡夫卡保留?还有,你查过卡夫卡和动物园管理员的日志了吗?