Давайте представим, что у меня есть REST API с конечной точкой /api/status
. При доступе к этой конечной точке API отправляет сообщение в очередь сообщений с запросом о состоянии какой-либо другой службы.
Затем в ответ служба отправляет сообщение со своим статусом в очередь, которую прослушивает REST API. Так что это одно сообщение для запроса статуса и одно ответное сообщение.
Мой вопрос: Существует ли шаблон проектирования для преобразования асинхронного характера этого подхода в синхронный в API? Другими словами: существует ли шаблон, в котором метод GetStatus(...)
используется в Приведенный ниже псевдокод может быть реализован для синхронизации получения статуса со связью по нескольким очередям сообщений или даже по системам pub / sub.
var statusRequestMsg = "get_status";
var statusResponseMsg = GetStatus(statusRequestMsg);
Я знаю, как решить эту проблему в коде, но мне было любопытно, есть ли шаблон проектирования, который вводит общий подход.
Я много гуглял в поисках этого, но единственная мысль, которую я нашел, была очень техническим объяснением подхода к этому в этой статье:
Модель связи для интеграции парадигм «запрос-ответ» и «публикация-подписка» в повсеместно распространенных системах
Обратите внимание, , что я понимаю, что это не идеальный дизайн API, и что есть лучшие способы реализации примера. Я создал приведенный выше пример, чтобы помочь мне проиллюстрировать мой вопрос. Также я понимаю, что некоторые AMQP вкл. (например, RabbitMQ) обеспечивает способ синхронизации связи MQ со стилем запроса / ответа.
Заранее спасибо.