即使成功建立连接并在kafka使用者控制台中获取消息,也无法使用kafka主题(使用python)中的消息

r3i60tvu  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(518)

这个问题已经存在

如何修复在python中不接收kafka消息而在shell中接收相同消息的问题?
去年关门了。
我有一套使用Kafka的debezium。我能够使用来自kafka控制台的消息,如文档中所述。但是,当我在本地使用python创建kafka使用者时,我无法使用消息。应该注意的是,Kafka控制台工作得很好!
我试着调查这个问题,但没有类似的环境/情况
我要连接的python代码是:

from kafka import KafkaConsumer
consumer = KafkaConsumer('dbserver1.inventory.customers', group_id='my-group', bootstrap_servers=['localhost:9092'], auto_offset_reset='earliest')
for message in consumer:
    print(message)

不管是已有的消息还是推送到这个主题的新消息,它都会变成空白。
我确信这些消息是存在的,因为当我打开一个控制台使用者时,我可以看到这些消息。
只是想澄清一下整个设置:我遵循了这一点(https://github.com/debezium/debezium-examples/tree/master/tutorial#using-mongodb)每个步骤的doc(最后一步除外)。除了我的python代码外,其他一切都正常。我还试着用 kafka:9092 引导服务器,但最终出现错误:

kafka.errors.NoBrokersAvailable: NoBrokersAvailable

我的本地电脑是mac os。
仅供参考:我可以获取其他所有内容,如主题:

>>> consumer = KafkaConsumer('dbserver1.inventory.customers', group_id='my-group', bootstrap_servers=['localhost:9092'], auto_offset_reset='earliest')
>>> consumer.topics()
{'my_connect_offsets', 'my_connect_configs', 'dbserver1.inventory.orders', 'connect-status', 'dbserver1.inventory.customers', 'dbserver1.inventory.products'}

我通过命令启动消费者:

docker-compose -f debezium-mongodb.yaml exec kafka /kafka/bin/kafka-console-consumer.sh \
    --bootstrap-server kafka:9092 \
    --from-beginning \
    --property print.key=true \
    --topic dbserver1.inventory.customers
fhity93d

fhity93d1#

没有看到你的文件, localhost:9092 很可能无法在基于docker命令的python代码中工作
如果python代码没有在容器中运行,则需要从其他端口读取。如果它在容器中运行,则必须使用 kafka:9092 您使用的端口取决于容器的播发侦听器
从本地计算机连接到Kafka在docker中运行

相关问题