3.6 KiB
3.6 KiB
aliases | tags | date | zero-link | parents | linked | |||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
-
Хранит данные в памяти
-
Гарантия доставки сообщений
- at least once delivery. Гарантируется, что наше сообщение получит хотя бы один клиент. Не гарантирует разовую обработку.
- at most once delivery. Не гарантирует доставку.
-
Гарантирует порядок передачи сообщений: FIFO. Если не был выполнен reject.
-
Имеется возможность сохранения на диск.
-
Подтверждение отправки/получения.
-
Ограничение количества отправляемых сообщений.
-
Управление поведением не полученных сообщений.
-
Кластеризация и Репликация из коробки.
-
Работает через 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
- Имеет плагины расширения
- Транзакций нет
- rabbit-test.zip - Пример работы с Rabbit
- rabbit-rpc.zip - Пример реализация rpc на базе Rabbit