TGViewer
Мастерская IT-решений Мастерская IT-решений @solutionstudio · 161 subscribers
Post #131 115
Механизм работы Брокера

Тема гарантий доставок является для меня животрепещущей, не терпится о ней порассуждать. Но для более глубокого понимания процесса следует разобрать базу: как вообще работает брокер.

✏️ - Продюсер
📖 - Читатель
📬 - Брокер


Шаг 1. Публикация
1. ✏️Продюсер устанавливает соединение с 📬Брокером (по протоколу AMQP, MQTT и тд).
2. ✏️Продюсер публикует сообщение в определённый топик (для Kafka).
3. 📬Брокер принимает сообщение и немедленно подтверждает его получение отправителю (это важно для гарантий). Если подтверждение не пришло, ✏️Продюсер может отправить сообщение повторно.
4. 📬Брокер сохраняет сообщение в памяти или на диск (в зависимости от настроек durability).


Шаг 2. Маршрутизация
1. Внутри топика по заранее заданным правилам определяет, в какие очереди должно быть помещено это сообщение.
2. Сообщение помещается в хвост выбранных очередей. Очередь - это и есть место хранения сообщений, ожидающих обработки.


Шаг 3: Доставка потребителю
1. 📖 Читатель, который заранее подписался на очередь, находится в состоянии ожидания.
2. Как только в очереди появляется сообщение, 📬Брокер выталкивает (push-модель, как в RabbitMQ) или позволяет забрать (pull-модель, как в Kafka) это сообщение 📖 Читателю.
3. Ключевой момент: После успешной обработки сообщения 📖 Читатель отправляет 📬 брокеру подтверждение (ACK).
4. Только после получения ACK 📬Брокер окончательно удаляет сообщение из очереди. Если ACK не пришло (consumer упал, таймаут), 📬Брокер считает доставку неудачной и перепосылает сообщение (другому или тому же потребителю).


Шаг 4: Обработка сбоев (на механическом уровне)
• Потеря соединения с 📖 Читателем: 📬Брокер возвращает неподтверждённые (unacked) сообщения обратно в очередь.
• Перезапуск 📬Брокера : Сообщения, объявленные как persistent (постоянные), восстанавливаются с диска.
• Недоступность 📖 Читателей: Сообщения накапливаются в очереди, пока не появится активный потребитель.

Чуть-чуть о гарантиях, чтобы вписать их в контекст

1. Подтверждение от брокера: Гарантия, что сообщение достигло брокера.
2. Сохранение на диск: Гарантия, что сообщение переживёт перезапуск брокера.
3. Подтверждение от потребителя: Гарантия, что сообщение было успешно обработано и может быть удалено. Без ACK — перепосылка.
4. Транзакции/Exactly-Once: Более сложные механизмы
More from @solutionstudio
  1. Sep 23, 2026Начинаем розыгрыш 1 билета на Стачку! Стачка - это шанс послушать крутых спикеров, понетво…
  2. Sep 22, 2026Привет, дорогие! Соскучились?) А я к вам с чем-то приятным. Все же знают, что скоро идём н…
  3. Aug 11, 2026Подводные камни JWT 🟣 Проблема инвалидации Это ахиллесова пята stateless-токенов. Предста…
  4. Aug 5, 2026JWT. Коробка с секретом, в которую можно заглянуть В прошлом посте мы остановились на том,…
  5. Jul 31, 2026Продолжаем мысль предыдущего поста. ❇️ Альтернатива: "Коробка с секретом" А что, если серв…
  6. Jul 28, 2026Точка входа. Почему сессия это сложно, и при чем тут токены Привет, коллеги. Сегодня вкаты…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →