Sdílet prostřednictvím


integrace .NET AspireAzure Service Bus

Aplikace nativní pro cloud často vyžadují komunikaci se službami zasílání zpráv, jako je Azure Service Bus. Služby zasílání zpráv pomáhají oddělit aplikace a umožňují scénáře, které spoléhají na funkce, jako jsou fronty, témata a odběry, atomické transakce, vyrovnávání zatížení a další. Integrace služby .NET Aspire Service Bus se zabývá následujícími aspekty připojení aplikace k Azure Service Bus:

  • ServiceBusClient je zaregistrovaný v kontejneru DI pro připojení k Azure Service Bus.
  • Aplikuje ServiceBusClient konfigurace buď přímo v kódu, nebo prostřednictvím nastavení konfiguračního souboru.

Požadavky

  • Azure předplatné – vytvořte si ho zdarma
  • Azure Service Bus obor názvů, zjistěte více o tom, jak přidat obor názvů služby Service Bus. Případně můžete použít připojovací řetězec, který se nedoporučuje v produkčních prostředích.

Začít

Pokud chcete začít s integrací .NET AspireAzure Service Bus, nainstalujte balíček NuGet 📦Aspire.Azure.Messaging.ServiceBus v projektu client, to znamená, projektu pro aplikaci, která používá Azure Service Busclient.

dotnet add package Aspire.Azure.Messaging.ServiceBus

Další informace najdete v dotnet add package nebo Spravovat závislosti balíčků v aplikacích .NET.

Příklad využití

V souboru Program.cs projektu, který využívá client, zavolejte rozšíření AddAzureServiceBusClient a zaregistrujte ServiceBusClient pro použití prostřednictvím kontejneru injektáže závislostí.

builder.AddAzureServiceBusClient("messaging");

Pokud chcete načíst nakonfigurovanou instanci ServiceBusClient pomocí injekce závislostí, vyžadujte ji jako parametr konstruktoru. Pokud chcete například načíst client z ukázkové služby:

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

Využití hostitele aplikace

Pokud chcete do IDistributedApplicationBuilderpřidat hostingovou podporu Azure Service Bus, nainstalujte balíček NuGet 📦Aspire.Hosting.Azure.ServiceBus do projektu hostitele aplikace .

dotnet add package Aspire.Hosting.Azure.ServiceBus

V hostitelském projektu aplikace zaregistrujte integraci služby Service Bus a pomocí následujících metod ji využijte:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Konfigurace

Integrace .NET.NET Aspire Service Bus nabízí několik možností konfigurace ServiceBusClient na základě požadavků a konvencí projektu.

Použití zprostředkovatelů konfigurace

Integrace služby Service Bus podporuje Microsoft.Extensions.Configuration. Načte AzureMessagingServiceBusSettings z appsettings.json nebo jiných konfiguračních souborů pomocí klíče Aspire:Azure:Messaging:ServiceBus.

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

Pokud jste nastavili konfigurace v části Aspire:Azure:Messaging:ServiceBus souboru appsettings.json, stačí zavolat metodu AddAzureServiceBusClient bez předání parametrů.

Použití vložených delegátů

Můžete také předat delegáta Action<AzureMessagingServiceBusSettings>, aby nastavil některé nebo všechny možnosti přímo, například nastavit FullyQualifiedNamespace:

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

Pomocí delegáta můžete také nastavit ServiceBusClientOptions, druhý parametr metody . Pokud chcete například nastavit ID ServiceBusClient pro identifikaci client:

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

Možnosti konfigurace

Prostřednictvím třídy AzureMessagingServiceBusSettings jsou zpřístupněny následující konfigurovatelné možnosti:

Jméno Popis
ConnectionString Připojovací řetězec použitý k připojení k jmennému prostoru služby Service Bus.
Credential Pověření použité k autentizaci v oboru názvů služby Service Bus.
FullyQualifiedNamespace Plně kvalifikovaný obor názvů služby Service Bus.
DisableTracing Zakáže trasování pro službu Service Bus client.
HealthCheckQueueName Název fronty používané pro kontroly stavu.
HealthCheckTopicName Název tématu, které se používá pro kontroly zdraví.

Při povolování kontrol stavu je povinná alespoň jedna z možností názvu.

Pozorovatelnost a telemetrie

.NET .NET Aspire integrace automaticky nastaví konfigurace protokolování, trasování a metrik, které se někdy označují jako pilíře pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na zálohovací službě můžou některé integrace podporovat pouze některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.

Protokolování

Integrace .NET AspireAzure Service Bus používá následující kategorie protokolů:

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

Trasování

Poznámka

Podpora služby Service Bus ActivitySource v sadě Azure SDK pro .NET je experimentální a tvar aktivit se může v budoucnu bez předchozího upozornění změnit.

Trasování můžete povolit několika způsoby:

  • Nastavení nastavení konfigurace Azure.Experimental.EnableActivitySourcemodulu runtime na true. To lze provést buď:

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

    • Do souboru projektu přidejte nastavení RuntimeHostConfigurationOption:

      <ItemGroup>
          <RuntimeHostConfigurationOption
               Include="Azure.Experimental.EnableActivitySource"
               Value="true" />
      </ItemGroup>
      
  • Nastavte proměnnou prostředí AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE na true.

    • Dosáhnout lze zřetěžením volání WithEnvironment("AZURE_EXPERIMENTAL_ENABLE_ACTIVITY_SOURCE", "true")

Pokud je tato možnost povolená, integrace .NET AspireAzure Service Bus pomocí OpenTelemetryvygeneruje následující aktivity trasování:

  • 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

Další informace najdete tady:

Metriky

Integrace .NET AspireAzure Service Bus v současné době nepodporuje metriky ve výchozím nastavení kvůli omezením sady Azure SDK pro .NET. Pokud se tyto změny v budoucnu změní, bude tato část aktualizována tak, aby odrážela tyto změny.

Viz také