使用kafka python检索主题中的消息
我使用使用kafka python检索主题中的消息,python,apache-kafka,kafka-consumer-api,kafka-python,Python,Apache Kafka,Kafka Consumer Api,Kafka Python,我使用kafka-python库编写了一个python脚本,该库将消息写入kafka。我写信息没有任何问题;我可以使用kafka控制台工具检索它们。但是我不能用我的python脚本阅读它们。我的消费者有一个for,它在迭代的第一行冻结,永远不会返回。这是我的密码: from kafka import KafkaConsumer consumer = KafkaConsumer( "my-topic", bootstrap_servers="localhost:9092"),
kafka-python
库编写了一个python脚本,该库将消息写入kafka
。我写信息没有任何问题;我可以使用kafka
控制台工具检索它们。但是我不能用我的python脚本阅读它们。我的消费者有一个for,它在迭代的第一行冻结,永远不会返回。这是我的密码:
from kafka import KafkaConsumer
consumer = KafkaConsumer(
"my-topic",
bootstrap_servers="localhost:9092"),
value_deserializer=lambda v: json.dumps(v).encode("utf-8")
)
for msg in consumer:
print(type(msg))
消费者已完全创建和订阅;我可以看到我的主题
列在其\u客户端
属性的主题列表中
有什么想法吗?默认情况下,kafka python从最后一个偏移量开始,ie将只读取新的mesages。 一种方法是从头开始读取,或者另一种方法是将轮询主题保持在无限循环中,如下代码所示:
while True:
try:
records = consumer.poll(60 * 1000) # timeout in millis , here set to 1 min
record_list = []
for tp, consumer_records in records.items():
for consumer_record in consumer_records:
record_list.append(consumer_record.value)
print(record_list) # record_list will be list of dictionaries
编辑
要从头开始阅读,我们需要在创建消费者对象时添加auto\u offset\u reset=earliest
earlies
consumer = KafkaConsumer(
"my-topic",
bootstrap_servers="localhost:9092"),
value_deserializer=lambda v: json.dumps(v).encode("utf-8"),
auto_offset_reset='earliest')
让我知道这是否有帮助 谢谢你的解释;你能给我举一个从头开始阅读的例子吗?这更适合我的情况。我从一开始就添加了一个阅读示例。希望这有帮助!!