Гарантии доставки в Kafka — какие бывают?
Ответ от нейросети
sobes.tech AI
В Kafka существуют три основных гарантии доставки сообщений:
-
At most once (не более одного раза) — сообщение может быть доставлено один раз или потеряно, но не будет дублироваться. Используется, когда потеря сообщений допустима.
-
At least once (минимум один раз) — сообщение гарантированно будет доставлено, но возможны дубликаты. Это стандартное поведение Kafka при использовании подтверждений и повторных попыток.
-
Exactly once (ровно один раз) — сообщение доставляется ровно один раз без дубликатов. Для этого Kafka использует идемпотентные продюсеры и транзакции, что позволяет обеспечить консистентность данных даже при сбоях.
Пример настройки продюсера для идемпотентной отправки сообщений на Java:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("enable.idempotence", "true"); // Включаем идемпотентность
KafkaProducer<String, String> producer = new KafkaProducer<>(props, new StringSerializer(), new StringSerializer());
Таким образом, выбор гарантии зависит от требований приложения к надежности и допустимости дубликатов.