В этой статье я покажу, как использовать 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, нажать в нужной очереди, а затем обозреватель служебной шины. Вы можете проверить эти параметры.