Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Почему сообщения в Kafka не удаляются сразу после чтения?

Вопрос проверяет понимание модели хранения данных в Kafka и различий между брокером сообщений и очередью.

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

Kafka не удаляет сообщения после чтения, потому что consumer не владеет сообщением. Сообщения хранятся в топике согласно политике retention. Каждый consumer читает сообщения независимо, используя offset’ы. Это позволяет нескольким consumer-группам читать одни и те же данные. Такой подход делает Kafka логом, а не очередью.

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

Kafka изначально спроектирована не как очередь, а как распределённый commit log.

Определение

Kafka topic — это неизменяемый лог сообщений, в который данные только дописываются и читаются по смещению (offset).

Как происходит чтение сообщений

Перед перечислением важно понять, что чтение не изменяет состояние брокера.

  1. Producer пишет сообщения в partition

  2. Сообщения получают offset

  3. Consumer читает сообщения по offset

  4. Offset сохраняется отдельно от данных

Почему сообщения не удаляются

Удаление сообщений после чтения нарушило бы ключевые свойства Kafka.

  1. Независимые consumer-группы

    • Каждая группа читает в своём темпе

    • Нет конфликта между потребителями

  2. Повторное чтение

    • Можно перечитать данные

    • Можно восстановить состояние

  3. Высокая пропускная способность

    • Нет координации удаления

    • Минимум синхронизации

Когда сообщения всё-таки удаляются

Удаление происходит по правилам retention.

  1. По времени (retention.ms)

  2. По размеру (retention.bytes)

  3. Через log compaction (для key-based данных)

Вывод

Kafka хранит сообщения независимо от чтения. Это делает её надёжным и масштабируемым логом событий, а не классической очередью.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Kafka

    Kafka

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

#topic

#retention

#offset

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