.NET Aspire Azure Service Bus integrering
Molnbaserade appar kräver ofta kommunikation med meddelandetjänster som Azure Service Bus. Meddelandetjänster hjälper till att frikoppla program och aktivera scenarier som förlitar sig på funktioner som köer, ämnen och prenumerationer, atomiska transaktioner, belastningsutjämning med mera. .NET Aspire Service Bus-integreringen hanterar följande problem för att ansluta appen till Azure Service Bus:
- En ServiceBusClient registreras i DI-containern för anslutning till Azure Service Bus.
- Gäller
ServiceBusClient
-konfigurationer antingen direkt i koden eller genom inställningar i konfigurationsfilen.
Förutsättningar
- Azure prenumeration – skapa en kostnadsfri
- Azure Service Bus-namnområde, lär dig mer om hur du lägger till en Service Bus-namnområde. Du kan också använda en anslutningssträng som inte rekommenderas i produktionsmiljöer.
Sätta igång
Kom igång med .NET AspireAzure Service Bus-integreringen genom att installera NuGet-paketet 📦Aspire.Azure. Messaging.ServiceBus i projektet som konsumerar client, dvs. projektet för det program som använder Azure Service Busclient.
dotnet add package Aspire.Azure.Messaging.ServiceBus
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET-applikationer.
Exempel på användning
I den Program.cs-filen för ditt client-konsumerande projekt anropar du AddAzureServiceBusClient-tillägget för att registrera en ServiceBusClient
för användning via containern för beroendeinjektion.
builder.AddAzureServiceBusClient("messaging");
Om du vill hämta den konfigurerade ServiceBusClient instansen med hjälp av beroendeinmatning behöver du den som en konstruktorparameter. Om du till exempel vill hämta client från en exempeltjänst:
public class ExampleService(ServiceBusClient client)
{
// ...
}
Appvärdanvändning
Om du vill lägga till Azure Service Bus värdstöd i din IDistributedApplicationBuilderinstallerar du 📦Aspire. Gästfrihet.Azure. ServiceBus NuGet-paket i appvärd projekt.
dotnet add package Aspire.Hosting.Azure.ServiceBus
I appvärdprojektet registrerar du Service Bus-integreringen och använder tjänsten med hjälp av följande metoder:
var builder = DistributedApplication.CreateBuilder(args);
var serviceBus = builder.ExecutionContext.IsPublishMode
? builder.AddAzureServiceBus("messaging")
: builder.AddConnectionString("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(serviceBus)
Konfiguration
.NET
.NET Aspire Service Bus-integreringen innehåller flera alternativ för att konfigurera ServiceBusClient
baserat på kraven och konventionerna i projektet.
Använda konfigurationsprovidrar
Service Bus-integreringen stöder Microsoft.Extensions.Configuration. Den läser in AzureMessagingServiceBusSettings
från appsettings.json eller andra konfigurationsfiler med hjälp av Aspire:Azure:Messaging:ServiceBus
nyckel.
{
"Aspire": {
"Azure": {
"Messaging": {
"ServiceBus": {
"DisableHealthChecks": true,
"DisableTracing": false,
"ClientOptions": {
"Identifier": "CLIENT_ID"
}
}
}
}
}
}
Om du har konfigurerat konfigurationerna i avsnittet Aspire:Azure:Messaging:ServiceBus
i filen appsettings.json kan du bara anropa metoden AddAzureServiceBusClient
utan att skicka några parametrar.
Använd infogade delegater
Du kan också överföra delegering Action<AzureMessagingServiceBusSettings>
för att konfigurera vissa eller alla alternativ direkt, till exempel för att ange FullyQualifiedNamespace
:
builder.AddAzureServiceBusClient(
"messaging",
static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");
Du kan också konfigurera ServiceBusClientOptions med hjälp av Action<IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions>>
delegat, det andra parametern i metoden AddAzureServiceBus
. Du kan till exempel ange ServiceBusClient
-ID:t för att identifiera client:
builder.AddAzureServiceBusClient(
"messaging",
static clientBuilder =>
clientBuilder.ConfigureOptions(
static options => options.Identifier = "CLIENT_ID"));
Konfigurationsalternativ
Följande konfigurerbara alternativ exponeras via klassen AzureMessagingServiceBusSettings:
Namn | Beskrivning |
---|---|
ConnectionString |
Anslutningssträngen som används för att ansluta till Service Bus-namnområdet. |
Credential |
Autentiseringsuppgifterna som används för att autentisera till Service Bus-namnområdet. |
FullyQualifiedNamespace |
Det fullständigt kvalificerade Service Bus-namnområdet. |
DisableTracing |
Inaktiverar spårning för Service Bus-client. |
†HealthCheckQueueName |
Namnet på kön som används för hälsokontroller. |
†HealthCheckTopicName |
Namnet på det ämne som används för hälsokontroller. |
† Minst ett av namnalternativen är obligatoriskt när du aktiverar hälsokontroller.
Observerbarhet och telemetri
.NET .NET Aspire integreringar ställer automatiskt in konfigurationer för loggning, spårning och mätvärden, som ibland är kända som grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i översikten över .NET.NET Aspire integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.
Skogsavverkning
.NET Aspire Azure Service Bus-integreringen använder följande loggkategorier:
Azure.Core
Azure.Identity
Azure-Messaging-ServiceBus
Spårning
Not
Service Bus-ActivitySource
stöd i Azure SDK för .NET är experimentellt och formen på aktiviteter kan ändras i framtiden utan föregående meddelande.
Du kan aktivera spårning på flera sätt:
Konfigurera konfigurationsinställningen
Azure.Experimental.EnableActivitySource
körning tilltrue
. Vilket kan göras med antingen:Anropa
AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);
.Lägg till inställningen
RuntimeHostConfigurationOption
i projektfilen:<ItemGroup> <RuntimeHostConfigurationOption Include="Azure.Experimental.EnableActivitySource" Value="true" /> </ItemGroup>
Ange
AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE
miljövariabeln till "true".- Kan uppnås genom att länka ett anrop till
WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")
- Kan uppnås genom att länka ett anrop till
När den är aktiverad genererar .NET AspireAzure Service Bus-integreringen följande spårningsaktiviteter med hjälp av 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
Mer information finns i:
- Azure SDK för .NET: Distribuerad spårning och Service Bus-client.
- Azure SDK för .NET: OpenTelemetry konfiguration.
- Azure SDK för .NET: Aktivera funktioner för experimentell spårning.
Mått
Den .NET AspireAzure Service Bus integreringen stöder för närvarande inte mått som standard på grund av begränsningar med Azure SDK för .NET. Om detta ändras i framtiden uppdateras det här avsnittet för att återspegla dessa ändringar.
Se även
.NET Aspire