【发布时间】:2020-06-02 09:44:52
【问题描述】:
我有两台 docker 机器,我想在 docker swarm 中创建一个 kafka 集群。我的docker-compose.yml 看起来像这样:
version: '3.2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:latest
ports:
- "9092:9092"
- "29092:29092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_LISTENERS: PLAINTEXT://:9092,PLAINTEXT_HOST://:29092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
我关注了这个问题:Unable to connect to Kafka run in container from Spring Boot app run outside container,我正在尝试使用 localhost:29092 从外部访问 kafka。
我已经在 kafka 中创建了主题mytesttopic。以下python代码:
from kafka import KafkaConsumer, SimpleProducer, TopicPartition, KafkaClient
def consume_from_topic():
try:
consumer = KafkaConsumer('mytesttopic',
group_id= None,
bootstrap_servers=['localhost:29092'],
auto_offset_reset='earliest')
for message in consumer:
#consumer.commit()
print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
message.offset, message.key,
message.value))
except Exception as e:
print(e)
pass
if __name__ == '__main__':
consume_from_topic()
返回:
没有经纪人可用
有人知道我在这里缺少什么吗?
【问题讨论】:
-
你提到你在两台机器上运行 docker swarm,你从哪个源运行 python 应用程序? docker 节点之一还是您的本地机器?
-
在我的本地机器上。
-
你执行哪个命令来调出堆栈?
标签: docker apache-kafka docker-swarm