digital-garden/_inbox/RabbitMQ.md

2.4 KiB
Raw Blame History

aliases tags date zero-link parents linked
RabbitMQ
type/moc
2024-07-02
00 Архитектура ПО
Брокер сообщений
  • Хранит данные в памяти

  • Гарантия доставки сообщений

    • at least once delivery. Гарантируется, что наше сообщение получит хотя бы один клиент.
    • at most once delivery. Не гарантирует доставку.
  • Гарантирует порядок передачи сообщений: FIFO

  • Имеется возможность сохранения на диск

  • Подтверждение отправки/получения

  • Ограничение количества отправляемых сообщений

  • Управление поведением не полученных сообщений

  • Кластеризация

  • Репликация

Терминология:

  • Queue - Буфер, который хранит messages. Никакой логики.
  • Connection - TCP соединение между приложениями и менеджером очередей.
  • Channel - Виртуальное соединение внутри Connection. Когда вы публикуете или получаете message через Queue, это все делается в Channel. По факту сессия.
  • Exchange - получает messages от producer и отправляет его в Queue. Он решает в какую Queue будет помещено message.
  • Binding - Связь между Queue и Exchange.
  • Routing Key - Ключ на который смотрит Exchange и решает в какую Queue перенаправить message.
  • Vhost (virtual host) - Способ разделения приложений на одном и том же экземпляре RabbitMQ.

Типы Exchange:

  • direct
  • fanout
  • topics
  • headers

Обработка сообщений

  • Поставщик публикует сообщение в Exchange.
  • Обработчик получает сообщение

Заметки

  • При прочтении сообщения consumer-ом сообщение удаляется из брокера.