Udostępnij za pośrednictwem


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ą , zainstaluj pakiet NuGet ..Messaging.ServiceBus w projekcie konsumującym , tj. w projekcie aplikacji używającej .

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")

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:

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.

Zobacz też