Sobes.tech
Назад к вопросам
Junior — Middle
65

Каким образом происходит извлечение и удаление сообщений из очереди Kafka после их обработки?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Kafka сообщения не удаляются сразу после обработки, а смещаются (offset) потребителя. Извлечение сообщений происходит через потребитель (consumer), который читает сообщения из топика.

Удаление сообщений из очереди происходит автоматически на стороне брокера по политике хранения (retention), а не вручную потребителем.

После обработки сообщений потребитель подтверждает (commit) смещение, чтобы Kafka знала, что эти сообщения обработаны и можно считать их прочитанными.

Пример на Java с использованием KafkaConsumer:

consumer.subscribe(Collections.singletonList("my-topic"));

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        // обработка сообщения
        System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
    }
    // подтверждение обработки
    consumer.commitSync();
}

Таким образом, сообщения не удаляются вручную, а смещение подтверждается, что позволяет потребителю продолжать чтение с нужного места.