Проверяет понимание семантики доставки сообщений.
Сообщение будет считано повторно после перезапуска consumer’а. Это классическое поведение “at least once”, поэтому обработчик должен быть идемпотентным.
Kafka хранит offset отдельно от сообщений.
Если:
consumer получил сообщение;
обработал его;
упал до коммита offset;
Kafka считает сообщение неподтверждённым.
После перезапуска:
consumer прочитает это сообщение снова;
возможна повторная обработка.
Именно поэтому:
нельзя полагаться на “ровно один раз”;
бизнес-логика должна быть идемпотентной;
часто используют:
idempotency key,
таблицу обработанных событий,
outbox/inbox паттерны.
Вывод: повторная доставка — норма, а не исключение.