В этой статье я покажу, как использовать ApolloBus с ServiceBus.

АполлонАвтобус

ApolloBus — это EventBus с интеграцией с RabbitMQ, Kafka и ServiceBus. ApolloBus позволяет абстрагироваться от публикации и подписки на сообщение.

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

Служебная шина Microsoft Azure

Служебная шина Microsoft Azure — это полностью управляемый корпоративный брокер сообщений с очередями сообщений и разделами публикации и подписки. Служебная шина используется для отделения приложений и служб друг от друга, обеспечивая следующие преимущества:

Балансировка нагрузки между конкурирующими воркерами

Безопасная маршрутизация и передача данных и контроль за границами сервисов и приложений

Координация транзакционной работы, требующей высокой степени надежности

Использование очереди

Использование темы и подписки

Как всем этим пользоваться?

Во-первых, вам нужно создать свою ServiceBus в Azure. Затем вам нужно решить, что вы будете использовать, очередь или тему. Потому что ApolloBus позволяет использовать оба подхода.

Отправитель

Давайте создадим веб-приложение. Я назову MicroserviceA и установлю пакет NuGetPackage ApolloBus.

Install-Package ApolloBus -Version 1.1.4

MicroserviceA будет отправителем, поэтому я создаю событие/сообщение

Мой EventFromMicroserviceA будет наследовать от события ApolloBus. Мне также необходимо зарегистрироваться в службе ServiceBus. Для этого я иду в файл запуска и добавляю.

services.AddServiceBus(Configuration);

А теперь я добавлю все конфигурации, необходимые для ServiceBus. В appsettings я добавил следующий код.

“ServiceBus”: {
 “ComplementaryConfig”: {
 “QueueOrTopic”: “queuetest01”,
 “IsQueue”: “true”,
 “SubscriptionName”: “”,
 “ConnectionString”: “YOUR KEY”
 },
 “ServiceBusProcessorOptions”: {
 “MaxConcurrentCalls”: 5
 }
 }

Поскольку это только для примера, я добавлю метод, опубликованный в контроллере. Для этого я использую интерфейс IApolloBus с DI.

Получатель

Для приемника давайте создадим еще одно веб-приложение. Я назвал MicroserviceB. И установите пакет ApolloBus NuGetPackage.

Install-Package ApolloBus -Version 1.1.4

Добавьте ту же конфигурацию.

“ServiceBus”: {
 “ComplementaryConfig”: {
 “QueueOrTopic”: “queuetest01”,
 “IsQueue”: “true”,
 “SubscriptionName”: “”,
 “ConnectionString”: “YOUR KEY”
 },
 “ServiceBusProcessorOptions”: {
 “MaxConcurrentCalls”: 5
 }
 }

И зарегистрируйте ServiceBus в файле запуска.

Но поскольку MicroserviceB является получателем, он будет добавлять обработчики. Для этого я добавил

services.AddTransient<EventFromMicroserviceAHandler>();

И

var ApolloBus =  app.ApplicationServices.GetRequiredService<IApolloBus>();
ApolloBus.Subscribe<EventFromMicroserviceA, EventFromMicroserviceAHandler>();

Здесь я говорю, что событие/сообщение EventFromMicroserviceA отправляется обработчику EventFromMicroserviceAHandler.

Для сообщения/события я копирую класс из MicroserviceA.
Обработчик должен обработать сообщение. Я вынужден реализовать интерфейс IEventHandler.

В этом случае мой обработчик записывает сообщение/событие в файл.

{«Имя»: «teste02», «Сообщение»: null, «Идентификатор»: «7a4e876b-97ff-4798–8c7c-7628f9306b1b», «Дата создания»: «2021–10–25T16:57:35.0306011Z»}

Служебная шина Azure

ServiceBus позволяет отправлять, получать и просматривать сообщения. Чтобы использовать эти ресурсы, вам нужно перейти к Azure ServiceBus, нажать в нужной очереди, а затем обозреватель служебной шины. Вы можете проверить эти параметры.

GitHub Аполлобус

Образец на гитхабе