Назад к вопросам
СБЕР
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();
}
Таким образом, сообщения не удаляются вручную, а смещение подтверждается, что позволяет потребителю продолжать чтение с нужного места.