integracja .NET AspireAzure Service Bus
Aplikacje natywne dla chmury często wymagają komunikacji z usługami obsługi komunikatów, takimi jak Azure Service Bus. Usługi obsługi komunikatów pomagają oddzielić aplikacje i umożliwiać scenariusze oparte na funkcjach, takich jak kolejki, tematy i subskrypcje, transakcje atomowe, równoważenie obciążenia i nie tylko. Integracja usługi Service Bus .NET Aspire rozwiązuje następujące zagadnienia, aby połączyć Twoją aplikację z usługą Azure Service Bus.
- W kontenerze DI zarejestrowano ServiceBusClient na potrzeby nawiązywania połączenia z Azure Service Bus.
- Stosuje konfiguracje
ServiceBusClient
w kodzie lub poprzez ustawienia pliku konfiguracyjnego.
Warunki wstępne
- subskrypcja Azure — utwórz ją za darmo
- Dowiedz się więcej o tym, jak dodać przestrzeń nazw w usłudze Service Bus Azure Service Bus. Alternatywnie, można użyć łańcucha połączenia, co nie jest zalecane w środowiskach produkcyjnych.
Zacznij
Aby rozpocząć pracę z integracją
dotnet add package Aspire.Azure.Messaging.ServiceBus
Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.
Przykładowe użycie
W pliku Program.cs projektu używającego clientwywołaj rozszerzenie AddAzureServiceBusClient, aby zarejestrować ServiceBusClient
do użycia przez kontener wstrzykiwania zależności.
builder.AddAzureServiceBusClient("messaging");
Aby pobrać skonfigurowane wystąpienie ServiceBusClient przy użyciu wstrzykiwania zależności, umieść je jako parametr konstruktora. Aby na przykład pobrać client z przykładowej usługi:
public class ExampleService(ServiceBusClient client)
{
// ...
}
Użycie hosta aplikacji
Aby dodać obsługę hostingu Azure Service Bus do IDistributedApplicationBuilder, zainstaluj pakiet NuGet 📦Aspire.Hosting.Azure.ServiceBus w projekcie hosta aplikacji .
dotnet add package Aspire.Hosting.Azure.ServiceBus
W projekcie hosta aplikacji zarejestruj integrację usługi Service Bus i użyj usługi przy użyciu następujących metod:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
Konfiguracja
Integracja .NET.NET Aspire Service Bus zapewnia wiele opcji konfigurowania ServiceBusClient
na podstawie wymagań i konwencji projektu.
Korzystanie z dostawców konfiguracji
Integracja usługi Service Bus obsługuje Microsoft.Extensions.Configuration. Ładuje AzureMessagingServiceBusSettings
z appsettings.json lub innych plików konfiguracji przy użyciu klucza Aspire:Azure:Messaging:ServiceBus
.
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
Jeśli konfiguracje zostały skonfigurowane w sekcji Aspire:Azure:Messaging:ServiceBus
pliku appsettings.json, możesz po prostu wywołać metodę AddAzureServiceBusClient
bez przekazywania żadnych parametrów.
Używanie delegatów wbudowanych
Możesz również przekazać delegata Action<AzureMessagingServiceBusSettings>
, aby skonfigurować niektóre lub wszystkie opcje bezpośrednio, na przykład w celu ustawienia FullyQualifiedNamespace
:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
Można również skonfigurować ServiceBusClientOptions przy użyciu delegata Action<IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions>>
, drugiego parametru metody AddAzureServiceBus
. Aby na przykład ustawić identyfikator ServiceBusClient
w celu zidentyfikowania client:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
Opcje konfiguracji
Następujące konfigurowalne opcje są udostępniane za pośrednictwem klasy AzureMessagingServiceBusSettings:
Nazwa | Opis |
---|---|
ConnectionString |
Parametry połączenia używane do nawiązywania połączenia z przestrzenią nazw usługi Service Bus. |
Credential |
Poświadczenia używane do uwierzytelniania w przestrzeni nazw usługi Service Bus. |
FullyQualifiedNamespace |
W pełni kwalifikowana przestrzeń nazw usługi Service Bus. |
DisableTracing |
Wyłącza śledzenie dla usługi Service Bus client. |
†HealthCheckQueueName |
Nazwa kolejki używanej do sprawdzania stanu zdrowia. |
†HealthCheckTopicName |
Nazwa tematu używanego do sprawdzania kondycji. |
† Co najmniej jedna z opcji nazw jest obowiązkowa podczas włączania kontroli stanu.
Obserwowanie i telemetria
.NET
.NET Aspire integracje automatycznie konfigurują rejestrowanie, śledzenie i metryki, które są czasami nazywane filarami obserwowalności. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz omówienie integracji .NET.NET Aspire. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji
Przemysł drzewny
Integracja .NET AspireAzure Service Bus używa następujących kategorii dzienników:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
Śledzenie
Notatka
Wsparcie ActivitySource
dla usługi Service Bus w zestawie SDK Azure dla .NET jest eksperymentalne, a sposób działania może ulec zmianie w przyszłości bez powiadomienia.
Śledzenie można włączyć na kilka sposobów:
Ustawienie ustawienia konfiguracji środowiska uruchomieniowego
Azure.Experimental.EnableActivitySource
na wartośćtrue
. Które można wykonać za pomocą jednego z następujących czynności:Wywołaj
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
.Dodaj ustawienie
RuntimeHostConfigurationOption
do pliku projektu:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
Ustaw zmienną środowiskową
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
na wartość "true".- Można to osiągnąć, łącząc wywołanie
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
- Można to osiągnąć, łącząc wywołanie
Po włączeniu integracja .NET AspireAzure Service Bus będzie emitować następujące działania śledzenia przy użyciu 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
Aby uzyskać więcej informacji, zobacz:
- Azure SDK dla .NET: śledzenie rozproszone i Service Bus client.
- Azure SDK dla .NET— OpenTelemetry konfiguracji.
- Azure SDK dla .NET: włączanie funkcji śledzenia eksperymentalnego.
Wskaźniki
Integracja .NET AspireAzure Service Bus obecnie nie obsługuje metryk z powodu ograniczeń dotyczących pakietu SDK Azure dla .NET. Jeśli ta zmiana nastąpi w przyszłości, ta sekcja zostanie zaktualizowana, aby odzwierciedlić te zmiany.