【发布时间】:2019-10-13 07:37:38
【问题描述】:
下面是我的 docker-compose 文件:
version: "3"
services:
app:
image: app
restart: always
ports:
- "8001:8081"
depends_on:
- kafka
- zookeeper
- consumer
environment:
- KAFKA_HOST = kafka
zookeeper:
image: "wurstmeister/zookeeper:latest"
ports:
- "2181:2181"
hostname: zookeeper
kafka:
image: "wurstmeister/kafka:2.12-2.2.0"
ports:
- "9092:9092"
hostname: kafka
links:
- zookeeper:zookeeper
environment:
KAFKA_CREATE_TOPICS: "Topic01:2:2" #TOPIC:PARTITON:REPLICATION
KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS: "60000"
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_LISTENERS: 'PLAINTEXT://:9092'
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:9092'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
consumer:
image: consumer:latest
build:
context: ./consumer
ports:
- "8283:8283"
使用app 图像的容器生成文本流,并且能够生成消息。
通过在kafka容器内导航验证:
docker exec -it <CONTAINER ID of Kafka Image> /bin/bash
当我在容器内手动运行以下脚本时
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic Topic01 --from-beginning
我可以看到正在生成的文本块。
但是当我尝试从图像consumer 的容器中读取相同的数据时,它给了我空白,
尝试的方法:
docker exec 在消费者容器中,并运行以下 python 代码:
from kafka import KafkaConsumer
consumer = KafkaConsumer('Topic01', bootstrap_servers='kafka:9092')
for messages in consumer:
print(messages)
它什么也不打印。
是我的docker-compose文件错误还是python代码的错误?
【问题讨论】:
-
该主题有多少个分区?
-
@aran 我在 compose 文件中给出了 2 个分区
标签: python python-3.x docker apache-kafka docker-compose