消费者在 运行 个生产者和消费者 python 个脚本上没有显示任何消息

No messages displayed by consumer on running producer and consumer python scripts

我在 Ubuntu 服务器上设置了 Apache Kafka,并按照 https://kafka.apache.org/quickstart 中提到的前五个步骤对其进行了测试,一切正常。

然后我继续安装 kafka-python 1.4.6 以在 python 中进行测试,并编写了简单的生产者和消费者脚本。

我的听众配置
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092

这是脚本

consum.py

from kafka import KafkaConsumer

consumer = KafkaConsumer('my-topic')
for message in consumer:
        print (message)

prod.py

from kafka import KafkaProducer
from kafka.errors import KafkaError

producer = KafkaProducer(bootstrap_servers='localhost:9092',api_version=(0, 10, 1))

producer.send('my-topic', b'Hello')

在 运行 上,生产者脚本立即完成并且消费者脚本不打印任何消息

任何我可能在这里遗漏的想法。
谢谢

问题是您的生产者脚本在消息发送前完成。 运行 send() 后,Python 到达脚本的最后一行并立即停止 运行。

您需要调用 flush() 强制运行时在终止之前等待所有消息发送。

from kafka import KafkaProducer
from kafka.errors import KafkaError

producer = KafkaProducer(bootstrap_servers='localhost:9092',api_version=(0, 10, 1))

producer.send('my-topic', b'Hello')

producer.flush()

除此之外,您的逻辑看起来不错(对我有用)。