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

Есть ли гарантия доставки у Kafka

Kafka обеспечивает высокую надежность доставки, но гарантии зависят от конфигурации:

  1. At least once (минимум один раз) - гарантируется при acks=all и replication.factor>=2. Сообщение не потеряется, но возможны дубли (если producer не получил ack и отправит повторно).

  2. Exactly once (ровно один раз) - достигается через:

    • Идемпотентность producer (enable.idempotence=true)
    • Транзакции между producer и consumer (isolation.level=read_committed)

Пример producer с гарантией exactly-once:

java
props.put("enable.idempotence", "true");
props.put("acks", "all");
props.put("transactional.id", "my-transactional-id");

Producer producer = new KafkaProducer<>(props);
producer.initTransactions();

try {
    producer.beginTransaction();
    producer.send(new ProducerRecord<>("topic", "key", "value"));
    producer.commitTransaction();
} catch (Exception e) {
    producer.abortTransaction();
}

Без правильной настройки возможны потери сообщений или дубли.

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

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

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

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