Интеграционный паттерн: Канал "точка-точка"
Статьи

Интеграционный паттерн: Канал "точка-точка"

Как сообщение попадает ровно одному получателю

В предыдущей статье мы рассмотрели паттерн “Канал сообщений” и увидели, как компоненты обмениваются данными через канал, не зная друг о друге напрямую.
Но возникает следующий вопрос: что происходит, если сообщение должно быть обработано только одним получателем?

Проблема распределения сообщений

Вернёмся к нашему примеру с обработкой заказа.После каждого этапа обработки сообщение передается дальше по каналу.

Но если в системе есть несколько обработчиков одного типа, например: несколько сервисов проверки и несколько сервисов обработки заказов - нужно понять кто именно получит сообщение?

Если сообщение получат все сразу, это приведет к дублированию обработки. Для таких случаев используется паттерн Point-to-Point Channel ( Канал «точка-точка»).
Его идея проста: каждое сообщение получает только один потребитель Даже если к каналу подключено несколько получателей, сообщение будет доставлено только одному из них.


канал точка-точка.jpg

Представим, что после всех фильтров заказ поступает в канал обработки. К этому каналу подключено несколько обработчиков заказов.

Когда приходит сообщение один из обработчиков забирает его, а остальные его уже не получают. Таким образом, каждый заказ обрабатывается ровно один раз.

Канал «точка-точка» используется, когда:

  • сообщение должно быть обработано только один раз,

  • есть несколько обработчиков для распределения нагрузки,

  • важно избежать дублирования.

преимущества Точка -точка.jpg

Паттерн: Канал «точка-точка» гарантирует, что каждое сообщение будет обработано только одним получателем.

В сочетании с паттерном “Канал сообщений”  он позволяет не только передавать сообщения, но и управлять тем, как именно они распределяются между компонентами системы.