首页 文章

Kafka:Docker容器和NoBrokersAvailable错误

提问于
浏览
0

我使用以下方式运行Kafka:

docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=192.168.99.100 --env ADVERTISED_PORT=9092 spotify/kafka

根据https://ngeor.wordpress.com/2017/03/25/kafka-with-docker-a-docker-introduction/ - -p标志用于发布网络端口 . 在容器内部,ZooKeeper在2181监听,Kafka在9092监听 . 如果我们不用-p发布它们,它们在容器外部不可用,所以我们不能真正使用它们 . - -env标志设置环境变量 . 根据spotify / kafka图像的文档需要这些 - 最后一部分指定我们要运行的图像:spotify / kafka

现在我想将 生产环境 者的消息发送到这个kafka端口 . 从另一个docker容器中:

from kafka import KafkaProducer
import json

producer = KafkaProducer(bootstrap_servers='localhost:9092',
                         value_serializer=lambda v: json.dumps(v).encode('utf-8'))

但是这会给出错误:kafka.errors.NoBrokersAvailable:NoBrokersAvailable

我怎么能确保两个Docker容器可以通信?

1 回答

  • 0

    您必须提供运行Kafka服务器的docker容器IP,而不是localhost .

    喜欢

    producer = KafkaProducer(bootstrap_servers =':9092',value_serializer = lambda v:json.dumps(v).encode('utf-8'))

相关问题