簡體   English   中英

使用 kafka-python 檢索主題中的消息

[英]retrieve messages in a topic using kafka-python

我已經使用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))

消費者被完全創建和訂閱; 我可以看到my-topic列在其_client屬性的主題列表中。

任何的想法?

默認情況下,kafka python 從最后一個偏移量開始,即只會讀取新消息。 一種方法是從頭開始閱讀,或者另一種方法是將輪詢主題保持在無限循環中,如下面的代碼所示:

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_offset_reset=earliest

consumer = KafkaConsumer(
    "my-topic",
    bootstrap_servers="localhost:9092"),
    value_deserializer=lambda v: json.dumps(v).encode("utf-8"),
    auto_offset_reset='earliest')

如果這有幫助,請告訴我!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM