--- aliases: - RabbitMQ tags: - type/moc date: - - 2024-07-02 zero-link: - "[[00 Архитектура ПО]]" parents: - "[[Брокер сообщений]]" linked: --- - Хранит данные в памяти - Гарантия доставки сообщений - at least once delivery. Гарантируется, что наше сообщение получит хотя бы один клиент. - at most once delivery. Не гарантирует доставку. - Гарантирует порядок передачи сообщений: FIFO - Имеется возможность сохранения на диск - Подтверждение отправки/получения - Ограничение количества отправляемых сообщений - Управление поведением не полученных сообщений - [Кластеризация](Кластеризация.md) - [Репликация](_inbox/Репликация.md) Терминология: - Queue - Буфер, который хранит messages. Никакой логики. - Connection - [TCP](TCP.md) соединение между приложениями и менеджером очередей. - 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. - Обработчик получает сообщение ![](Pasted%20image%2020240703091701.png) ## Заметки - При прочтении сообщения consumer-ом сообщение удаляется из брокера.