2016-01-09 2 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's config/server.properties по своему вкусу. Значение по умолчанию - 168, что означает, что сообщения не сохраняются после 168 часов.

Если вместо этого вы ищете способ, чтобы читать сообщения от определенного смещения - то есть не читать с самого начала каждый раз, смотрите здесь http://kafka-python.readthedocs.org/en/master/apidoc/KafkaConsumer.html
commit() - совершение чтения коррекций Кафке
seek_to_end() - быстрая перемотка вперед к потреблению только вновь прибывающие сообщения
seek() - переход к заданному смещению (предположительно хранится в другом месте, чем у Кафки)

Смежные вопросы