2016-01-09 55 views
2

我正在使用以下代碼從主題中讀取消息。閱讀後如何刪除郵件?如何在閱讀後刪除kafka消息

from kafka import KafkaConsumer 


    consumer = KafkaConsumer('my-topic', 
          group_id='my-group', 
          bootstrap_servers=['localhost:9092']) 
    for message in consumer: 
     # message value and key are raw bytes -- decode if necessary! 
     # e.g., for unicode: `message.value.decode('utf-8')` 
     print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition, 
               message.offset, message.key, 
               message.value)) 
+0

這可能幫助:http://stackoverflow.com/questions/28586008/delete-message-after-consuming-it-在-卡夫卡 – Val

回答

4

沒有辦法從kafka - kafka刪除一個特定的消息,根本就沒有這樣做。刪除郵件的唯一方法是將kafka的config/server.properties中的設置爲您喜歡的值。默認值是168 - 表示郵件在168小時後不會保留。

如果你不是正在尋找一種方法來讀取特定的消息抵消 - 即不是從一開始就每一次閱讀,看這裏http://kafka-python.readthedocs.org/en/master/apidoc/KafkaConsumer.html
commit() - 提交讀偏移卡夫卡
seek_to_end() - 快進到只消耗新到達的消息
seek() - 移動到指定的偏移(可能存儲在其他地方比在卡夫卡)