Что делает настройка auto.offset.reset=earliest?
- С какого места читает новый consumer group?
auto.offset.reset действует, только когда у группы нет сохранённого offset (новая группа или offset удалён по сроку). earliest — читать с самого раннего доступного, latest — только новые, none — ошибка.
- По умолчанию latest: новая группа пропустит всё, что было до её старта
- Если сохранённый offset есть, настройка игнорируется
- Offset группы удаляется через offsets.retention.minutes (7 дней) после неактивности
А ещё Перемотка вручную — kafka-consumer-groups.sh --reset-offsets
Подробно
Группа потребителей хранит свою позицию в __consumer_offsets. При старте потребитель продолжает с сохранённого offset. Настройка auto.offset.reset нужна для случаев, когда позиции нет:
- новая группа читает топик впервые;
- сохранённый offset удалён — группа была неактивна дольше
offsets.retention.minutes(по умолчанию 7 дней); - сохранённый offset указывает на удалённые по retention данные.
Значения:
earliest— начать с самого старого доступного сообщения (вся история в пределах хранения);latest(по умолчанию) — начать с конца: обрабатывать только новые;none— бросить исключение, пусть решает приложение.
Ловушка: новый сервис с latest запускается после того, как события уже пошли, — и пропускает их. Для сервисов, которым важны все события, — earliest и идемпотентная обработка. Наоборот, для «живых» уведомлений старые события не нужны.
Ручная перемотка — kafka-consumer-groups --reset-offsets --to-datetime или --to-earliest при остановленной группе, например чтобы перечитать события после исправления бага.
Что хотят услышать
- Когда настройка применяется.
- Значения и поведение по умолчанию.
- Практические ловушки и ручная перемотка.
Частые ошибки
- Думать, что earliest заставляет каждый раз читать с начала.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Перечитывает топик с самого начала при каждом запуске consumer-а, игнорируя коммиты
- ✗Удаляет committed offsets группы
- ✓Если у группы нет committed offset, чтение начинается с самого раннего offset
- ✗Коммитит offset после каждого record
Что спросят дальше
- Чем earliest отличается от latest?
- Как вручную сбросить offsets группы?
Разбор темы
- Kafka Consumer и consumer group
Группа и распределение партиций, poll-цикл, heartbeat и таймауты, модели commit offset, ребаланс и роль идемпотентности.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.