Реализация стилей взаимодействия¶
Механизмы обмена сообщениями достаточно гибки, чтобы реализовать все стили взаимодействия. Вот как реализуется каждый.
Реализация синхронных и асинхронных запросов/ответов¶

Клиент и сервис могут взаимодействовать, отправляя запросы и принимая ответы. Если это происходит синхронно, клиент ожидает немедленного ответа от сервиса, если асинхронно — не ждёт. Обмен сообщениями по природе асинхронен, но клиент может блокироваться, пока не получен ответ.
Чтобы реализовать стиль взаимодействия, клиент и сервис обмениваются парными сообщениями через каналы типа “точка-точка” (см. рисунок). Сначала клиент отправляет в канал сервиса команду с указанием операции и ее параметров, а также идентификатором запроса и каналом ответа в заголовке. Сервис обрабатывает команду и записывает свой ответ в указанный канал с указанием идентификатора соответствия равного идентификатору запроса. Клиент использует идентификатор соответствия, чтобы сопоставить ответ с запросом.
Поскольку клиент и сервис взаимодействуют с помощью сообщений, их общение асинхронно. Теоретически, клиент может заблокироваться в ожидании ответа. Кроме того, легко сделать так, чтобы ответ обрабатывался любым экземпляром клиента.
Реализация однонаправленных уведомлений¶
Клиент шлет сообщение (обычно командное) в канал типа “точка-точка”, принадлежащий сервису. Сервис подписывается на канал и обрабатывает сообщения, не возвращая ничего в ответ.
Реализация стиля “издатель/подписчик”¶
Клиент публикует сообщение в канале типа “издатель-подписчик” сообщение, которое считывается несколькими потребителями. Сервисы используют этот стиль взаимодействия для публикации доменных событий (изменений в доменных объектах). Обычно одному типу доменных объектов соответствует один канал.
Реализация стиля “издатель/асинхронные ответы”¶
Этот стиль сочетает в себе стили “издатель/подписчик” и “запрос/ответ”. Клиент публикует в канале “издатель-подписчик” сообщение с каналом ответа в заголовке. Потребитель записывает в канал ответа (типа “точка-точка”) ответное сообщение с идентификатором взаимодействия. Клиент принимает ответы и сопоставляет их с запросом при помощи идентфикатора взаимодействия.
Дата создания : 25 июля 2022 г.