Опубликовать / подписаться на azure сервисный автобус - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть Microservice (Web API), который публикует sh сообщения для Topi c (Topi c A).

Теперь у меня есть другой Microservice (Web API), который должен подписаться на эту топи c и действуйте в соответствии с сообщениями.

Мой вопрос прост: как мне это сделать, поскольку мой микросервис, который должен подписаться на топи c, является WebApi? В моем веб-интерфейсе я хочу как-то мгновенно узнать, когда в Topi c доступно новое сообщение. Должен ли я опрашивать служебную шину через конечную точку?

Я очень сомневаюсь в лучших примерах этого.

Все примеры, которые я видел, использовали консольные приложения для подписки. Но это не мой случай, так как у меня есть веб-интерфейс.

Рад помочь!

Ответы [ 4 ]

2 голосов
/ 01 апреля 2020

Есть разные способы сделать это.

1. Использование Azure функций

Таким образом, вы создаете два приложения. Ваш стандартный веб-интерфейс, и отдельно вы создаете функцию Azure, которая будет обрабатывать сообщения из очереди. Есть несколько преимуществ этого подхода, в том числе то, что вы изолируете код, обрабатывающий очередь, поэтому, если у вас много сообщений, это не повлияет на производительность вашего API

2. Использование Singleton-сервиса внутри вашего веб-приложения

Идея заключается в том, что ваше приложение API обрабатывает сообщения очереди в фоновом режиме. Это имеет то преимущество, что у вас есть только одно приложение, которое делает все, например, проще в обслуживании. Недостатком является то, что очень большой поток сообщений будет замедлять работу ваших API.

(Обратите внимание, в приведенной выше ссылке ищите Использование сообщений из очереди

0 голосов
/ 02 апреля 2020

Для прослушивания в фоновом режиме вы можете использовать IHostedService . Внутри метода StartAsync

вы можете зарегистрировать обработчики сообщений;

  queueClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions)

И на StopAsync вы можете остановить обработку сообщений и закрыть клиент.

0 голосов
/ 01 апреля 2020

Вы можете опросить веб-работу или фоновое задание. Но встроенный способ сделать это с помощью функции Azure , запускаемой из Topi c, или с помощью Azure сетки событий .

0 голосов
/ 01 апреля 2020

Является ли WebAPI или console, потребитель несет ответственность за связь и сбор записей. Быть WebAPI не означает, что у него должны быть только публичные c конечные точки. Типичный WebAPI может иметь общедоступную конечную точку c (для внешнего мира) или может иметь частные конечные точки (для внутренней связи) или может иметь комбинацию обоих. Ответственность частных конечных точек может заключаться в чтении данных из сервисного хранилища данных, потреблении внешних сервисов через сервисы адаптера и т. Д. c. В вашем случае после инициализации вашего WebAPI вы можете захотеть создать потребительский объект и начать читать данные и обрабатывать их так, как вам хочется. Надеюсь, что это поможет.

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