digital-garden/_inbox/00 RabbitMQ.md

57 lines
3.6 KiB
Markdown
Raw Permalink Normal View History

2024-07-02 19:53:38 +03:00
---
aliases:
- RabbitMQ
tags:
- type/moc
date:
- - 2024-07-02
2024-07-03 09:30:43 +03:00
zero-link: []
2024-07-02 19:53:38 +03:00
parents:
- "[[Брокер сообщений]]"
linked:
---
2024-07-22 15:00:02 +03:00
- Хранит данные в памяти
2024-07-02 22:38:56 +03:00
- Гарантия доставки сообщений
2024-07-31 13:37:32 +03:00
- at least once delivery. Гарантируется, что наше сообщение получит хотя бы один клиент. Не гарантирует разовую обработку.
2024-07-02 22:44:03 +03:00
- at most once delivery. Не гарантирует доставку.
2024-07-31 13:42:32 +03:00
- Гарантирует порядок передачи сообщений: FIFO. Если не был выполнен reject.
- Имеется возможность сохранения на диск.
- Подтверждение отправки/получения.
- Ограничение количества отправляемых сообщений.
- Управление поведением не полученных сообщений.
- [Кластеризация](Кластеризация.md) и [Репликация](_inbox/Репликация.md) из коробки.
2024-07-03 12:25:33 +03:00
- Работает через push модель. Данные отправляются на producer.
2024-07-02 22:44:03 +03:00
2024-07-31 13:42:32 +03:00
**Терминология:**
2024-07-03 10:26:00 +03:00
- [Queue](Queue.md) - Буфер, который хранит messages. Никакой логики.
2024-07-02 22:49:02 +03:00
- Connection - [TCP](TCP.md) соединение между приложениями и менеджером очередей.
2024-07-03 09:15:44 +03:00
- Channel - Виртуальное соединение внутри Connection. Когда вы публикуете или получаете message через Queue, это все делается в Channel. По факту сессия.
2024-07-03 09:30:43 +03:00
- [Exchange](Exchange.md) - получает messages от producer и отправляет его в Queue. Он решает в какую Queue будет помещено message.
2024-07-03 09:15:44 +03:00
- Binding - Связь между Queue и Exchange.
- Routing Key - Ключ на который смотрит Exchange и решает в какую Queue перенаправить message.
- Vhost (virtual host) - Способ разделения приложений на одном и том же экземпляре RabbitMQ.
2024-07-03 09:20:44 +03:00
2024-07-03 09:30:43 +03:00
Обработка сообщений в RabbitMQ
2024-09-01 18:44:54 +03:00
![Обработка сообщений в RabbitMQ](_inbox/Обработка%20сообщений%20в%20RabbitMQ.md)
2024-07-03 10:36:31 +03:00
## Работа с памятью
По умолчанию, если RabbitMQ начинает использовать больше 40% от общего объема памяти, то все соединения блокируются. При высвыбождении памяти до порогового значения нормальный процесс работы возобновляется.
Порог используемой памяти можно переопределить:
```
rabbitmqctl set_vm_memory_high_watermark 0.5
```
или перманентно в `/etc/rabbitmq/rabbitmq.config`:
```
[rabbit, [(vm_memory_high_watermark, 0.5)}.
```
2024-07-02 22:44:03 +03:00
## Заметки
2024-07-03 10:31:00 +03:00
- При прочтении сообщения consumer-ом сообщение удаляется из брокера.
2024-08-20 13:27:08 +03:00
- Если включить запись сообщений на диск, то теряется скорость, так как сначала сообщения записываются на диск
2024-07-03 12:04:40 +03:00
- Написан на Erlang
2024-07-04 13:46:32 +03:00
- Имеет плагины расширения
2024-08-20 13:57:07 +03:00
- Транзакций нет
- [rabbit-test.zip](rabbit-test.zip) - Пример работы с Rabbit
- [rabbit-rpc.zip](rabbit-rpc.zip) - Пример реализация rpc на базе Rabbit