Delen via


integratie van .NET AspireAzure Service Bus

Cloudeigen apps vereisen vaak communicatie met berichtenservices zoals Azure Service Bus. Met berichtenservices kunt u toepassingen loskoppelen en scenario's inschakelen die afhankelijk zijn van functies zoals wachtrijen, onderwerpen en abonnementen, atomische transacties, taakverdeling en meer. De .NET Aspire Service Bus-integratie verwerkt de volgende problemen om uw app te verbinden met Azure Service Bus:

  • Een ServiceBusClient wordt geregistreerd in de DI-container om verbinding te maken met Azure Service Bus.
  • Past ServiceBusClient-configuraties toe in de code of via configuratiebestandsinstellingen.

Voorwaarden

  • Azure-abonnement - een gratis aanmaken
  • Azure Service Bus naamruimte, lees meer over hoe je een Service Bus-naamruimte kunt toevoegen. U kunt ook een verbindingsreeks gebruiken, die niet wordt aanbevolen in productieomgevingen.

Aan de slag

Installeer de 📦Aspireom aan de slag te gaan met de .NET AspireAzure Service Bus-integratie.Azure. Messaging.ServiceBus NuGet-pakket in het clientverbruikende project, d.w. het project voor de toepassing die gebruikmaakt van de Azure Service Busclient.

dotnet add package Aspire.Azure.Messaging.ServiceBus

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Voorbeeld van gebruik

Roep in het Program.cs-bestand van uw clientverbruikende project de AddAzureServiceBusClient-extensie aan om een ServiceBusClient te registreren voor gebruik via de container voor afhankelijkheidsinjectie.

builder.AddAzureServiceBusClient("messaging");

Als u het geconfigureerde ServiceBusClient-exemplaar wilt ophalen met behulp van afhankelijkheidsinjectie, moet u dit als constructorparameter vereisen. Als u bijvoorbeeld de client wilt ophalen uit een voorbeeldservice:

public class ExampleService(ServiceBusClient client)
{
    // ...
}

App-hostgebruik

Als u Azure Service Bus hostingondersteuning wilt toevoegen aan uw IDistributedApplicationBuilder, installeert u het 📦Aspire.Hosting.Azure.ServiceBus NuGet-pakket in het app-host project.

dotnet add package Aspire.Hosting.Azure.ServiceBus

Registreer in uw app-hostproject de Service Bus-integratie en gebruik de service met behulp van de volgende methoden:

var builder = DistributedApplication.CreateBuilder(args);

var serviceBus = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureServiceBus("messaging")
    : builder.AddConnectionString("messaging");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(serviceBus)

Configuratie

De .NET.NET Aspire Service Bus-integratie biedt meerdere opties voor het configureren van de ServiceBusClient op basis van de vereisten en conventies van uw project.

Configuratieproviders gebruiken

De Service Bus-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de AzureMessagingServiceBusSettings uit appsettings.json of andere configuratiebestanden met behulp van Aspire:Azure:Messaging:ServiceBus sleutel.

{
  "Aspire": {
    "Azure": {
      "Messaging": {
        "ServiceBus": {
          "DisableHealthChecks": true,
          "DisableTracing": false,
          "ClientOptions": {
            "Identifier": "CLIENT_ID"
          }
        }
      }
    }
  }
}

Als u uw configuraties hebt ingesteld in de sectie Aspire:Azure:Messaging:ServiceBus van uw appsettings.json-bestand, kunt u de methode AddAzureServiceBusClient aanroepen zonder parameters door te geven.

Inline gedelegeerden gebruiken

U kunt ook de Action<AzureMessagingServiceBusSettings> delegate doorgeven om sommige of alle opties direct in te stellen, bijvoorbeeld om de FullyQualifiedNamespacein te stellen:

builder.AddAzureServiceBusClient(
    "messaging",
    static settings => settings.FullyQualifiedNamespace = "YOUR_SERVICE_BUS_NAMESPACE");

U kunt ook de ServiceBusClientOptions- instellen met behulp van Action<IAzureClientBuilder<ServiceBusClient, ServiceBusClientOptions>> gemachtigde, de tweede parameter van de AddAzureServiceBus methode. Als u bijvoorbeeld de ServiceBusClient-id wilt instellen om de clientte identificeren:

builder.AddAzureServiceBusClient(
    "messaging",
    static clientBuilder =>
        clientBuilder.ConfigureOptions(
            static options => options.Identifier = "CLIENT_ID"));

Configuratieopties

De volgende configureerbare opties worden weergegeven via de AzureMessagingServiceBusSettings klasse:

Naam Beschrijving
ConnectionString De verbindingsreeks die wordt gebruikt om verbinding te maken met de Service Bus-naamruimte.
Credential De gebruiksgegevens die worden gebruikt voor verificatie van de Service Bus-naamruimte.
FullyQualifiedNamespace De volledig gekwalificeerde Service Bus-naamruimte.
DisableTracing Hiermee schakelt u tracering voor de Service Bus-clientuit.
†HealthCheckQueueName De naam van de wachtrij die wordt gebruikt voor statuscontroles.
†HealthCheckTopicName De naam van het onderwerp dat wordt gebruikt voor statuscontroles.

† Ten minste één van de naamopties is verplicht bij het inschakelen van statuscontroles.

Waarneembaarheid en telemetrie

.NET .NET Aspire integraties automatisch configuraties voor logboekregistratie, tracering en metrische gegevens instellen, die ook wel bekend staan als de pijlers van waarneembaarheid. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.

Loggen

De .NET AspireAzure Service Bus-integratie maakt gebruik van de volgende logboekcategorieën:

  • Azure.Core
  • Azure.Identity
  • Azure-Messaging-ServiceBus

Tracing

Notitie

Service Bus ActivitySource ondersteuning in de Azure SDK voor .NET experimenteel is en de vorm van activiteiten kan in de toekomst zonder kennisgeving veranderen.

U kunt tracering op verschillende manieren inschakelen:

  • De Azure.Experimental.EnableActivitySourceruntime-configuratie-instelling instellen op true. Dit kan worden gedaan met een van de volgende opties:

    • Bel AppContext.SetSwitch("Azure.Experimental.EnableActivitySource", true);.

    • Voeg de RuntimeHostConfigurationOption-instelling toe aan het projectbestand:

      <ItemGroup>
          <RuntimeHostConfigurationOption
               Include="Azure.Experimental.EnableActivitySource"
               Value="true" />
      </ItemGroup>
      
  • Stel de omgevingsvariabele AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE in op 'true'.

    • Kan worden bereikt door het koppelen van een aanroep naar WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")

Wanneer deze optie is ingeschakeld, verzendt de integratie van de .NET AspireAzure Service Bus de volgende traceringsactiviteiten met behulp van 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

Zie voor meer informatie:

Statistieken

De integratie van .NET AspireAzure Service Bus biedt momenteel geen ondersteuning voor metrische gegevens vanwege beperkingen met de Azure SDK voor .NET. Als deze wijzigingen in de toekomst worden gewijzigd, wordt deze sectie bijgewerkt om deze wijzigingen weer te geven.

Zie ook