3.1 KiB
3.1 KiB
aliases | tags | date | zero-link | parents | linked | |||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
-
Хранит данные в памяти
-
Гарантия доставки сообщений
- at least once delivery. Гарантируется, что наше сообщение получит хотя бы один клиент.
- at most once delivery. Не гарантирует доставку.
-
Гарантирует порядок передачи сообщений: FIFO
-
Имеется возможность сохранения на диск
-
Подтверждение отправки/получения
-
Ограничение количества отправляемых сообщений
-
Управление поведением не полученных сообщений
-
Кластеризация и Репликация из коробки
-
Работает через push модель. Данные отправляются на producer.
Терминология:
- 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.
Обработка сообщений в RabbitMQ
Работа с памятью
По умолчанию, если RabbitMQ начинает использовать больше 40% от общего объема памяти, то все соединения блокируются. При высвыбождении памяти до порогового значения нормальный процесс работы возобновляется.
Порог используемой памяти можно переопределить:
rabbitmqctl set_vm_memory_high_watermark 0.5
или перманентно в /etc/rabbitmq/rabbitmq.config
:
[rabbit, [(vm_memory_high_watermark, 0.5)}.
Заметки
- При прочтении сообщения consumer-ом сообщение удаляется из брокера.
- Написан на Erlang
- Имеет плагины расширения
- Транзакций нет