Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: kafka, consumer, offset, delivery

Что произойдёт, если consumer Kafka упадёт после обработки сообщения, но до коммита offset?

Проверяет понимание семантики доставки сообщений.

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

Сообщение будет считано повторно после перезапуска consumer’а. Это классическое поведение “at least once”, поэтому обработчик должен быть идемпотентным.

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

Kafka хранит offset отдельно от сообщений.

Если:

  1. consumer получил сообщение;

  2. обработал его;

  3. упал до коммита offset;

Kafka считает сообщение неподтверждённым.

После перезапуска:

  • consumer прочитает это сообщение снова;

  • возможна повторная обработка.

Именно поэтому:

  • нельзя полагаться на “ровно один раз”;

  • бизнес-логика должна быть идемпотентной;

  • часто используют:

    • idempotency key,

    • таблицу обработанных событий,

    • outbox/inbox паттерны.

Вывод: повторная доставка — норма, а не исключение.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Golang

    Golang

  • Kafka

    Kafka

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

#kafka

#consumer

#offset

#delivery

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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