【发布时间】:2019-02-25 13:46:40
【问题描述】:
我正在使用 dockerized Kafka 并编写了一个 Kafka 消费者程序。当我在本地机器上的 docker 和应用程序中运行 Kafka 时,它可以完美运行。但是当我在 docker 中配置本地应用程序时,我遇到了问题。该问题可能是由于在应用程序启动之前未创建主题。
docker-compose.yml
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
parse-engine:
build: .
depends_on:
- "kafka"
command: python parse-engine.py
ports:
- "5000:5000"
解析引擎.py
from kafka import KafkaConsumer
import json
try:
print('Welcome to parse engine')
consumer = KafkaConsumer('test', bootstrap_servers='localhost:9092')
for message in consumer:
print(message)
except Exception as e:
print(e)
# Logs the error appropriately.
pass
错误日志
kafka_1 | [2018-09-21 06:27:17,400] INFO [SocketServer brokerId=1001] Started processors for 1 acceptors (kafka.network.SocketServer)
kafka_1 | [2018-09-21 06:27:17,404] INFO Kafka version : 2.0.0 (org.apache.kafka.common.utils.AppInfoParser)
kafka_1 | [2018-09-21 06:27:17,404] INFO Kafka commitId : 3402a8361b734732 (org.apache.kafka.common.utils.AppInfoParser)
kafka_1 | [2018-09-21 06:27:17,431] INFO [KafkaServer id=1001] started (kafka.server.KafkaServer)
**parse-engine_1 | Welcome to parse engine
parse-engine_1 | NoBrokersAvailable
parseengine_parse-engine_1 exited with code 0**
kafka_1 | creating topics: test:1:1
由于我已经在 docker-compose 中添加了 depends_on 属性,但在启动主题应用程序连接之前发生了错误。
我读到我可以在 docker-compose 文件中添加脚本,但我正在寻找一些简单的方法。
感谢您的帮助
【问题讨论】:
-
不,不一样。我能够连接 Kafka,但面临诸如懒惰主题创建之类的问题。
-
绝对一样。
NoBrokersAvailable因为你连接到错误的引导服务器 -
仍面临问题,因此未标记为已接受
-
请用您当前的代码更新您的问题,然后,因为如上所述,Python 代码中的
localhost:9092不正确
标签: python docker apache-kafka docker-compose kafka-consumer-api