Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kafka: kafka, message key, retention

Как сделать так, чтобы в Kafka для пользователя хранилось только последнее событие?

Вопрос проверяет опыт работы с kafka.

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

Отправляйте сообщения с ключом пользователя и используйте compacted topic. Механизм лог-компакции оставляет последнее сообщение на ключ, удаляя старые версии.

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

Механика:

  • Message key = user_id;

  • Топик с cleanup.policy=compact (можно совместить compact,delete);

  • Компакция периодически сохраняет только последний оффсет для каждого ключа.

Настройки (концептуально):

  • на стороне брокера/топика: cleanup.policy=compact;

  • продюсер: всегда отправляет ключ user_id.

Замечания:

  • консумеры всё равно увидят всю историю до компакции;

  • для «строго последнего» при чтении — используйте KTable/чтение последнего состояния.

Вывод: log compaction — способ хранить последнее состояние per-key в Kafka.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • Kafka

    Kafka

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

#kafka

#message key

#retention

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.