![](/img/trans.png)
[英]Is there a way to create log compacted topic using kafka-python library?
[英]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.