❓ Какие бывают гарантии доставки сообщений в Kafka?
В Kafka существует три уровня гарантий доставки сообщений:
1️⃣ At most once (максимум один раз)Сообщение может быть потеряно, но никогда не будет обработано дважды. Producer отправляет сообщение и не ждет подтверждения (acks=0). Самый быстрый, но ненадежный вариант.2️⃣ At least once (минимум один раз)Сообщение гарантированно доставлено, но может быть обработано несколько раз. Producer ждет подтверждения от лидера (acks=1) или всех реплик (acks=all). При повторной отправке возможны дубликаты. Используется чаще всего.3️⃣ Exactly once (ровно один раз)Сообщение доставляется и обрабатывается строго один раз. Достигается через idempotent producer (enable.idempotence=true) и транзакции. Самый надежный, но с небольшим оверхедом по производительности.Выбор зависит от задачи: для логов подойдет
at most once, для финансовых операций —
exactly once, для большинства случаев —
at least once с идемпотентной обработкой.🐸 Библиотека собеса по Java#core