Модуль 1. Основы брокеров
Базовые понятия
Поставщик (Producer)
Сервис, передающий сообщения в брокер.
Сообщение (Messages)
Данные, которые продьюсер отправляет, а консьюмер позже забирает и обрабатывает.
Брокер сообщений (Broker)
Промежуточный софт, реализующий логику отправки и получения сообщений от внешних сервисов.
Потребитель (consumer)
Сервис, получающий сообщение из брокера.
Условия поставки
Условие поставки
Порядок, в котором сообщения попадают и извлекаются из очереди.
Вот основные виды условий поставки:
FIFO
FIFO (First In — First Out)
- Первым пришел, первым ушел. Сообщения обрабатываются в том порядке, в котором они попали в очередь.
- Пример. Пусть продьюсер отправил в очередь сначала сообщение M1, потом M2, потом M3. Консьюмер в таком случае получит их в том же порядке: сначала M1, потом M2, затем M3.
- Где встречается: обработка заказов, финансовые операции, последовательные изменения состояния.
LIFO
LIFO (Last In — First Out)
- Последним пришёл, первым ушёл. Какое сообщение пришло последним, то и обрабатывается в первую очередь.
- Пример. Пусть продьюсер отправил в очередь сначала сообщение M1, потом M2, потом M3. Консьюмер в таком случае получит их в обратном порядке: сначала M3, потом M2, затем M1.
- Где встречается: обработка задач с приоритетом «самое свежее важнее»: например, отмена предыдущих действий или интерактивные сценарии, где актуальность важнее хронологии.
LIFO встречается редко в брокерах сообщений. И обычно реализуется не как базовое свойство очереди, а как частный приём на уровне логики обработки
Модели потребления
| Один потребитель | Множество потребителей | |
|---|---|---|
| Удаление при чтении | Queue (классический брокер) | Pub-Sub (классический брокер) |
| Не удаляются при чтении | Модель с одним потребителем и чтением без удаления практически не используется. Как правило применяют Log | Log (Kafka) |
Итого можно выделить 3 модели:
- Queue (Очередь) - один потребитель, сообщения удаляются при чтении
- Pub-Sub ()