Apache kafka 在运行producer和consumer python脚本时,使用者不会显示任何消息

Apache kafka 在运行producer和consumer python脚本时,使用者不会显示任何消息,apache-kafka,ubuntu-16.04,kafka-python,Apache Kafka,Ubuntu 16.04,Kafka Python,我在Ubuntu服务器上安装了ApacheKafka,并按照中提到的前五个步骤进行了测试,一切正常 然后,我继续安装kafka python 1.4.6,用python进行测试,并编写了简单的生产者和消费者脚本 我的侦听器配置 listeners=PLAINTEXT://localhost:9092 advised.listeners=PLAINTEXT://localhost:9092 这里是脚本 consum.py from kafka import KafkaConsumer consu

我在Ubuntu服务器上安装了ApacheKafka,并按照中提到的前五个步骤进行了测试,一切正常

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

我的侦听器配置
listeners=PLAINTEXT://localhost:9092
advised.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到达脚本的最后一行并立即停止运行

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

从卡夫卡导入卡夫卡制作人
从kafka.errors导入KafkaError
producer=KafkaProducer(bootstrap_servers='localhost:9092',api_version=(0,10,1))
producer.send('my-topic',b'Hello')
producer.flush()
除此之外,您的逻辑看起来很好(对我来说也很有效)。

通过将producer.flush()添加到producer脚本,消费者可以打印消息