Встречается на собеседованиях • сегодня

Можно ли читать сообщение с задержкой в Kafka

Да, в Kafka можно читать сообщения с задержкой. Для этого есть несколько подходов:

  1. seek() + poll(): можно переместить offset на нужную позицию и начать чтение:
python
from kafka import KafkaConsumer

consumer = KafkaConsumer('topic', bootstrap_servers='localhost:9092')
consumer.seek_to_beginning()  # или seek(partition, offset)
for msg in consumer:
    print(msg)
  1. auto_offset_reset='earliest': читать с самого начала топика:
python
consumer = KafkaConsumer(
    'topic',
    bootstrap_servers='localhost:9092',
    auto_offset_reset='earliest'
)
  1. Тайминги: Kafka хранит сообщения определенное время (по умолчанию 7 дней), поэтому можно читать "старые" сообщения, пока они не удалились.

  2. Таймстампы: с версии 0.10.1 можно искать сообщения по timestamp:

python
offsets = consumer.offsets_for_times({
    partition: timestamp_ms 
    for partition in consumer.partitions_for_topic('topic')
})
for partition, offset in offsets.items():
    consumer.seek(partition, offset)

Важно: задержка чтения ограничена retention policy брокера.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы