Возможно ли для Azure API Management выполнять синхронную публикацию в Azure Service Bus? - PullRequest
0 голосов
/ 12 апреля 2019

Я конвертирую монолитное приложение в микросервисы.Я установил уровень управления API и служебную шину в пределах Service Fabric.Идея состоит в том, чтобы использовать сообщения для связи с микросервисами, чтобы они не знали друг о друге.

Когда одному микросервису нужна информация, он отправляет сообщение на служебную шину, и он выполняется, а ответ отправляется и сопоставляется.

Единственная проблема состоит в том, что управление API отправляет сообщение на служебную шину и возвращается без ожидания ответа, поэтому клиент не получает ответ.

Есть ли способ получитьУправление API ожидает ответа?

Нужно ли промежуточное обслуживание?

Лучше ли просто иметь слой REST на каждом микросервисе, который может вызвать Управление API, нотогда службы будут использовать служебную шину?

Спасибо за любую помощь.

ОБНОВЛЕНИЕ:

Я думаю, что единственный способ заставить Api Management ждатьэто использование логического приложения.Не уверен насчет этого.

Есть какие-нибудь эксперты по Azure?

1 Ответ

1 голос
/ 15 апреля 2019

То, как ведет себя APIM, на самом деле ожидается.

Сервисная шина предназначена для разделения различных (микро) сервисов и по своей сути не имеет стиля работы типа «запрос-ответ», хотя она может быть реализована таким образом.

Вот один из способов спроектировать / внедрить вашу систему

  • Во-первых, для операции типа «запрос-ответ» с сервисной шиной, одним из способов ее достижения является использование двух очередей .

    Один для отправки запроса (вместе с некоторым уникальным идентификатором - подойдет GUID), а другой - для получения ответа (который снова содержит уникальный идентификатор, отправленный в запросе).

  • Вместо того, чтобы APIM работал с Service Bus, вызовите приложение или функцию логики, которая сделает это за вас.

  • Наконец, ожидание ответа зависит от вашего варианта использования.

    Если у вас очень долго выполняемая задача, лучше всего следовать шаблону асинхронности, реализованному в приложениях логики и функциях ( с использованием Durable Functions ), которые возвращают 202 Accepted немедленно ответьте URI статуса, чтобы ваш клиент мог запрашивать обновления.

    Но если это быстрый ответ (до истечения времени ожидания HTTP-запроса), вы, вероятно, могли бы дождаться сообщения служебной шины ответа и затем вернуть ответ. Для этого ваше приложение или функция логики должны будут опрашивать / ждать сообщения служебной шины с тем же уникальным идентификатором, а затем возвращать ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...