Dela via


.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

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.EnableActivitySourcekörning till true. 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")

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:

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