Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kafka: consumer, offset

Что происходит с сообщениями при временной недоступности consumer’а?

Вопрос проверяет понимание того, как брокер сообщений ведет себя при сбоях consumer’ов и как обеспечивается устойчивость обработки.

Короткий ответ

При временной недоступности consumer’а сообщения не пропадают и остаются в брокере. Они хранятся до тех пор, пока consumer не вернется и не продолжит чтение с последнего зафиксированного offset’а. Если используется группа consumer’ов, партиции могут быть перераспределены. Поведение зависит от настроек ретенции и commit-стратегии. В результате система остается работоспособной.

Длинный ответ

В брокерах сообщений, таких как Kafka, consumer считается временно отключившимся, если он перестает отправлять heartbeat’ы.

Хранение сообщений в брокере

Сообщения:

  • записываются в партиции

  • хранятся независимо от состояния consumer’ов

  • удаляются только по правилам ретенции

Даже если consumer недоступен, брокер продолжает принимать новые сообщения.

Роль offset’ов

Consumer читает сообщения, опираясь на offset:

  • последний зафиксированный offset — точка восстановления

  • незакоммиченные сообщения считаются необработанными

После восстановления consumer:

  • продолжает чтение с последнего commit’а

  • может повторно обработать часть сообщений

Consumer group и ребалансировка

Если consumer входит в группу:

  • при его падении происходит rebalance

  • партиции перераспределяются между оставшимися consumer’ами

Когда consumer возвращается:

  • он может получить другие партиции

  • чтение начнется с актуальных offset’ов группы

Ограничения

Сообщения могут быть потеряны, если:

  • истек срок ретенции

  • consumer был недоступен слишком долго

Вывод: временная недоступность consumer’а не приводит к потере сообщений, если ретенция и commit-стратегия настроены корректно.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Kafka

    Kafka

Ключевые слова

#consumer

#offset

Подпишись на Java Developer в телеграм