интеграция .NET AspireAzure Service Bus
Облачные приложения часто требуют взаимодействия со службами обмена сообщениями, такими как Azure Service Bus. Службы обмена сообщениями помогают отделять приложения и включать сценарии, использующие такие функции, как очереди, разделы и подписки, атомарные транзакции, балансировка нагрузки и многое другое. Интеграция служебной шины .NET Aspire обрабатывает следующие проблемы для подключения приложения к Azure Service Bus:
- ServiceBusClient регистрируется в контейнере DI для подключения к Azure Service Bus.
- Применяет конфигурации
ServiceBusClient
или непосредственно через код, или через параметры файла конфигурации.
Необходимые условия
- подписка Azure — создать ее бесплатно
- Azure Service Bus пространстве имен, узнайте больше о том, как добавить пространство имен служебной шины. Кроме того, можно использовать строку подключения, которая не рекомендуется в рабочих средах.
Начало работы
Чтобы приступить к работе с интеграцией .NET AspireAzure Service Bus, установите пакет NuGet 📦Aspire.Azure.Messaging.ServiceBus в проект, использующий client, т. е. в проект приложения, которое использует Azure Service Busclient.
dotnet add package Aspire.Azure.Messaging.ServiceBus
Дополнительные сведения см. в dotnet add package или управление зависимостями пакетов в .NET приложениях.
Пример использования
В файле Program.cs вашего проекта с использованием clientвызовите расширение AddAzureServiceBusClient, чтобы зарегистрировать ServiceBusClient
для работы через контейнер внедрения зависимостей.
builder.AddAzureServiceBusClient("messaging");
Чтобы получить настроенный экземпляр ServiceBusClient с помощью внедрения зависимостей, необходимо использовать его в качестве параметра конструктора. Например, чтобы получить client из примера сервиса:
public class ExampleService(ServiceBusClient client)
{
// ...
}
Использование хоста приложения
Чтобы добавить поддержку размещения Azure Service Bus в IDistributedApplicationBuilder, установите 📦Aspire.Хостинг.Azure.ServiceBus пакет NuGet в проекте узла приложения .
dotnet add package Aspire.Hosting.Azure.ServiceBus
В проекте узла приложения зарегистрируйте интеграцию служебной шины и используйте службу с помощью следующих методов:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
Конфигурация
Интеграция служебной шины .NET.NET Aspire предоставляет несколько вариантов настройки ServiceBusClient
на основе требований и соглашений проекта.
Использование поставщиков конфигураций
Интеграция служебной шины поддерживает Microsoft.Extensions.Configuration. Он загружает AzureMessagingServiceBusSettings
из appsettings.json или других файлов конфигурации с помощью ключа Aspire:Azure:Messaging:ServiceBus
.
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
Если вы настроили конфигурации в разделе Aspire:Azure:Messaging:ServiceBus
файла appsettings.json, можно просто вызвать метод AddAzureServiceBusClient
без передачи параметров.
Использование встроенных делегатов
Вы также можете передать делегат Action<AzureMessagingServiceBusSettings>
для настройки некоторых или всех встроенных параметров, например, чтобы задать FullyQualifiedNamespace
:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
Можно также настроить ServiceBusClientOptions с помощью делегата Action<IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions>>
, второго параметра метода AddAzureServiceBus
. Например, чтобы установить идентификатор ServiceBusClient
для обозначения client:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
Параметры конфигурации
Следующие настраиваемые параметры предоставляются через класс AzureMessagingServiceBusSettings:
Имя | Описание |
---|---|
ConnectionString |
Строка подключения, используемая для подключения к пространству имен служебной шины. |
Credential |
Учетные данные, используемые для аутентификации в пространстве имен Service Bus. |
FullyQualifiedNamespace |
Полное пространство имен шины Service Bus. |
DisableTracing |
Отключает трассировку для Service Bus client. |
†HealthCheckQueueName |
Имя очереди, используемой для проверок работоспособности. |
†HealthCheckTopicName |
Название темы, используемой для проверок работоспособности. |
† как минимум один вариант имени обязателен при включении проверок работоспособности.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически настраивают конфигурации журналов, трассировки и метрик, которые иногда называются основами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Лесозаготовка
Интеграция .NET AspireAzure Service Bus использует следующие категории журналов:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
Отслеживание
Заметка
Поддержка служебной шины ActivitySource
в пакете SDK Azure для .NET экспериментальна, а форма действий может измениться в будущем без уведомления.
Трассировку можно включить несколькими способами:
Установка параметра конфигурации среды выполнения
Azure.Experimental.EnableActivitySource
наtrue
. Что можно сделать с помощью следующих действий:Вызов
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
.Добавьте параметр
RuntimeHostConfigurationOption
в файл проекта:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
Задайте для переменной среды
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
значение true.- Можно достичь путем цепочки вызова
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
- Можно достичь путем цепочки вызова
При включении интеграции .NET AspireAzure Service Bus будут выполняться следующие действия трассировки с использованием OpenTelemetry:
Message
ServiceBusSender.Send
ServiceBusSender.Schedule
ServiceBusSender.Cancel
ServiceBusReceiver.Receive
ServiceBusReceiver.ReceiveDeferred
ServiceBusReceiver.Peek
ServiceBusReceiver.Abandon
ServiceBusReceiver.Complete
ServiceBusReceiver.DeadLetter
ServiceBusReceiver.Defer
ServiceBusReceiver.RenewMessageLock
ServiceBusSessionReceiver.RenewSessionLock
ServiceBusSessionReceiver.GetSessionState
ServiceBusSessionReceiver.SetSessionState
ServiceBusProcessor.ProcessMessage
ServiceBusSessionProcessor.ProcessSessionMessage
ServiceBusRuleManager.CreateRule
ServiceBusRuleManager.DeleteRule
ServiceBusRuleManager.GetRules
Дополнительные сведения см. в следующем разделе:
- SDK Azure для .NET: распределенная трассировка и служебная шина client.
- пакет SDK Azure для .NET: конфигурации OpenTelemetry.
- SDK Azure для .NET: активация экспериментальных функций трассировки.
Метрика
Интеграция .NET AspireAzure Service Bus в настоящее время не поддерживает метрики по умолчанию из-за ограничений пакета SDK Azure для .NET. Если в будущем произойдут изменения, этот раздел будет обновлён, чтобы их отразить.
См. также
- Azure Service Bus
- интеграции .NET.NET Aspire
- .NET Aspire GitHub репозитория
.NET Aspire