Udostępnij za pośrednictwem


integracja .NET AspireAzure Event Hubs

Azure Event Hubs to natywna usługa przesyłania strumieniowego danych w chmurze, która może przesyłać strumieniowo miliony zdarzeń na sekundę z małym opóźnieniem z dowolnego źródła do dowolnego miejsca docelowego. Integracja .NET AspireAzure Event Hubs umożliwia łączenie aplikacji .NET z instancjami Azure Event Hubs.

Integracja hostingu

.NET .NET Aspire Azure Event Hubs integracja hostingu modeluje różne zasoby Event Hub jako następujące typy:

Aby uzyskać dostęp do tych typów i interfejsów API w celu ich wyrażania w projekcie hosta aplikacji , zainstaluj pakiet NuGet 📦Aspire.Hosting.Azure.EventHubs.

dotnet add package Aspire.Hosting.Azure.EventHubs

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.

Dodawanie zasobu Azure Event Hubs

Aby dodać AzureEventHubsResource do projektu hosta aplikacji, wywołaj metodę AddAzureEventHubs podając nazwę, a następnie wywołaj AddHub:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs");
eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Po dodaniu zasobu Azure Event Hubs do hosta aplikacji odsłania on inne przydatne interfejsy API, które umożliwiają dodawanie zasobów centrum zdarzeń, grup odbiorców, wyrażenie jawnej konfiguracji aprowizacji oraz korzystanie z emulatora Azure Event Hubs. Powyższy kod dodaje zasób Azure Event Hubs o nazwie event-hubs i centrum zdarzeń o nazwie messages do projektu hosta aplikacji. Metoda WithReference przekazuje informacje o połączeniu do projektu ExampleService.

Ważny

Podczas wywołania AddAzureEventHubsnastępuje również niejawne wywołanie AddAzureProvisioning(IDistributedApplicationBuilder), co dodaje możliwość dynamicznego generowania zasobów Azure podczas uruchamiania aplikacji. Aplikacja musi skonfigurować odpowiednią subskrypcję i lokalizację. Aby uzyskać więcej informacji, zobacz Lokalne zaopatrzenie: Konfiguracja

Wygenerowany skrypt aprowizacji Bicep

Jeśli dopiero zaczynasz przygodę z Bicep, jest to język specyficzny dla domeny, używany do definiowania zasobów Azure. W przypadku .NET.NET Aspirenie musisz pisać Bicep ręcznie; zamiast tego interfejsy API do aprowizacji generują Bicep za Ciebie. Podczas publikowania aplikacji, wygenerowany plik Bicep zostaje wyeksportowany razem z plikiem manifestu. Po dodaniu zasobu Azure Event Hubs jest generowany następujący kod Bicep:

@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location

param sku string = 'Standard'

param principalType string

param principalId string

resource event_hubs 'Microsoft.EventHub/namespaces@2024-01-01' = {
  name: take('event_hubs-${uniqueString(resourceGroup().id)}', 256)
  location: location
  sku: {
    name: sku
  }
  tags: {
    'aspire-resource-name': 'event-hubs'
  }
}

resource event_hubs_AzureEventHubsDataOwner 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(event_hubs.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'f526a384-b230-433a-b45c-95f59c4a2dec'))
  properties: {
    principalId: principalId
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'f526a384-b230-433a-b45c-95f59c4a2dec')
    principalType: principalType
  }
  scope: event_hubs
}

resource messages 'Microsoft.EventHub/namespaces/eventhubs@2024-01-01' = {
  name: 'messages'
  parent: event_hubs
}

output eventHubsEndpoint string = event_hubs.properties.serviceBusEndpoint

Poprzedni Bicep to moduł, który udostępnia zasób Azure Event Hubs z następującymi wartościami domyślnymi.

  • location: lokalizacja grupy zasobów.
  • sku: jednostka SKU zasobu usługi Event Hubs domyślnie ma wartość Standard.
  • principalId: główny identyfikator zasobu Event Hubs.
  • principalType: Główny typ zasobu Event Hubs.
  • event_hubs: Zasób przestrzeni nazw Event Hubs.
  • event_hubs_AzureEventHubsDataOwner: właściciel zasobu Event Hubs oparty na wbudowanej roli Azure Event Hubs Data Owner. Aby uzyskać więcej informacji, zobacz Azure Event Hubs Właściciel danych.
  • messages: zasób Centrum Zdarzeń.
  • eventHubsEndpoint: punkt końcowy zasobu usługi Event Hubs.

Wygenerowany Bicep jest punktem wyjścia i można go dopasować, aby spełnić Twoje konkretne wymagania.

Dostosowywanie infrastruktury aprowizacji

Wszystkie zasoby .NET AspireAzure to podklasy typu AzureProvisioningResource. Ten typ umożliwia dostosowanie wygenerowanego kodu Bicep, zapewniając płynny interfejs API do konfigurowania zasobów Azure przy użyciu API ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>). Można na przykład skonfigurować kind, consistencyPolicy, locationsi więcej. W poniższym przykładzie pokazano, jak dostosować zasób AzureAzure Cosmos DB:

builder.AddAzureEventHubs("event-hubs")
    .ConfigureInfrastructure(infra =>
    {
        var eventHubs = infra.GetProvisionableResources()
                             .OfType<EventHubsNamespace>()
                             .Single();

        eventHubs.Sku = new EventHubsSku()
        {
            Name = EventHubsSkuName.Premium,
            Tier = EventHubsSkuTier.Premium,
            Capacity = 7,
        };
        eventHubs.PublicNetworkAccess = EventHubsPublicNetworkAccess.SecuredByPerimeter;
        eventHubs.Tags.Add("ExampleKey", "Example value");
    });

Powyższy kod:

Dostępnych jest wiele opcji konfiguracji umożliwiających dostosowanie zasobu usługi Event Hubs. Aby uzyskać więcej informacji, zobacz Azure.Provisioning.PostgreSql. Aby uzyskać więcej informacji, zobacz Azure.Provisioning dostosowywanie.

Nawiązywanie połączenia z istniejącą przestrzenią nazw Azure Event Hubs

Być może istnieje przestrzeń nazw Azure Event Hubs, do której chcesz się podłączyć. Zamiast reprezentować nowy zasób Azure Event Hubs, można dodać łańcuch połączenia do hosta aplikacji. Aby dodać połączenie z istniejącą przestrzenią nazw Azure Event Hubs, wywołaj metodę AddConnectionString:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddConnectionString("event-hubs");

builder.AddProject<Projects.WebApplication>("web")
       .WithReference(eventHubs);

// After adding all resources, run the app...

Uwaga

Parametry połączenia służą do reprezentowania szerokiego zakresu informacji o połączeniu, w tym połączeń z bazą danych, brokerów komunikatów, identyfikatorów URI punktów końcowych i innych usług. W .NET.NET Aspire nomenklaturze termin "parametry połączenia" służy do reprezentowania wszelkich informacji o połączeniu.

Ciąg połączenia jest konfigurowany w konfiguracji hosta aplikacji, zazwyczaj w obszarze Tajne dane użytkownika, w sekcji ConnectionStrings. Host aplikacji wprowadza te parametry połączenia jako zmienną środowiskową do wszystkich zasobów zależnych, na przykład:

{
  "ConnectionStrings": {
    "event-hubs": "{your_namespace}.servicebus.windows.net"
  }
}

Zasób zależny może uzyskać dostęp do wstrzykiwanych parametrów połączenia, wywołując metodę GetConnectionString i przekazując nazwę połączenia jako parametr, w tym przypadku "event-hubs". Interfejs API GetConnectionString jest skrótem dla IConfiguration.GetSection("ConnectionStrings")[name].

Dodaj grupę odbiorców centrum zdarzeń

Aby dodać grupę odbiorców, połącz wywołanie IResourceBuilder<AzureEventHubsResource> z interfejsem API AddConsumerGroup:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs");
var messages = eventHubs.AddHub("messages");
messages.AddConsumerGroup("messagesConsumer");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Podczas wywoływania AddConsumerGroupprogram konfiguruje zasób usługi messages Event Hub tak, aby grupa odbiorców miała nazwę messagesConsumer. Grupa konsumentów jest tworzona w przestrzeni nazw Azure Event Hubs reprezentowanej przez AzureEventHubsResource, który dodałeś wcześniej. Aby uzyskać więcej informacji, zobacz Azure Event Hubs: Grupy konsumentów.

Dodawanie zasobu emulatora Azure Event Hubs

Integracja hostowania .NET AspireAzure Event Hubs obsługuje lokalne uruchamianie zasobu usługi Event Hubs jako emulatora na podstawie obrazu kontenera mcr.microsoft.com/azure-messaging/eventhubs-emulator/latest. Jest to korzystne w sytuacjach, w których chcesz uruchomić zasób usługi Event Hubs lokalnie na potrzeby programowania i testowania, unikając konieczności aprowizacji zasobu Azure lub nawiązywania połączenia z istniejącym serwerem Azure Event Hubs.

Aby uruchomić zasób usługi Event Hubs jako emulator, wywołaj metodę RunAsEmulator:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator();

eventHubs.AddHub("messages");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(eventHubs);

// After adding all resources, run the app...

Powyższy kod konfiguruje zasób Azure Event Hubs do uruchamiania lokalnego w kontenerze. Aby uzyskać więcej informacji, zobacz Azure Event Hubs Emulator.

Konfigurowanie kontenera emulatora usługi Event Hubs

Istnieją różne konfiguracje dostępne dla zasobów kontenera; na przykład można skonfigurować porty kontenera, powiązania danych, woluminy danych lub dostarczyć całościową konfigurację JSON, która zastępuje wszystkie ustawienia.

Konfigurowanie portu hosta kontenera emulatora usługi Event Hubs

Domyślnie kontener emulatora usługi Event Hubs skonfigurowany przez .NET.NET Aspireuwidacznia następujące punkty końcowe:

Punkt końcowy Obraz Port kontenerowy Port hosta
emulator mcr.microsoft.com/azure-messaging/eventhubs-emulator/latest 5672 dynamiczny

Port, na który nasłuchuje, jest domyślnie dynamiczny. Po uruchomieniu kontenera port jest mapowany na losowy port na maszynie hosta. Aby skonfigurować port punktu końcowego, łańcuch wywołań konstruktora zasobów kontenera dostarczonego przez metodę RunAsEmulator, a następnie WithHostPort(IResourceBuilder<AzureEventHubsEmulatorResource>, Nullable<Int32>), jak pokazano w poniższym przykładzie:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithHostPort(7777);
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Powyższy kod konfiguruje istniejący punkt końcowy emulator kontenera emulatora zdarzeń Azure do nasłuchiwania na porcie 7777. Port kontenera emulatora zdarzeń Azure jest mapowany na port hosta, jak pokazano w poniższej tabeli:

Nazwa punktu końcowego Mapowanie portów (container:host)
emulator 5672:7777
Dodawanie emulatora usługi Event Hubs z woluminem danych

Aby dodać wolumin danych do zasobu emulatora usługi Event Hubs, wywołaj metodę WithDataVolume w zasobie emulatora usługi Event Hubs:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithDataVolume();
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Wolumin danych jest używany do utrwalania danych emulatora usługi Event Hubs poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /data w kontenerze. Nazwa jest generowana losowo, chyba że zostanie określony parametr name. Aby uzyskać więcej informacji na temat woluminów danych i szczegóły dotyczące tego, dlaczego są preferowane zamiast montowań wiązań , zobacz dokumentację Docker: Woluminy.

Dodawanie emulatora usługi Event Hubs z instalacją powiązania danych

Aby dodać montowanie powiązania do kontenera emulatora Event Hubs, połącz wywołanie interfejsu API WithDataBindMount, jak pokazano w poniższym przykładzie:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithDataBindMount("/path/to/data");
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Ważny

Powiązania montowań danych mają ograniczoną funkcjonalność w porównaniu z woluminami , które zapewniają lepszą wydajność, przenośność i bezpieczeństwo, dzięki czemu są bardziej odpowiednie dla środowisk produkcyjnych. Jednak mocowania bind umożliwiają bezpośredni dostęp i modyfikację plików w systemie hosta, co jest idealne dla rozwoju i testowania, gdzie potrzebne są zmiany w czasie rzeczywistym.

Montowanie wiązane danych polega na używaniu systemu plików maszyny hosta do przechowywania danych zasobów emulatora Azure Event Hubs między ponownymi uruchomieniami kontenera. Instalacja powiązania danych jest instalowana w ścieżce /path/to/data na maszynie hosta w kontenerze. Aby uzyskać więcej informacji na temat montowania powiązań danych, zobacz dokumentację Docker: Montowanie powiązań.

Konfigurowanie konfiguracji kontenera emulatora usługi Event Hubs JSON

Kontener emulatora usługi Event Hubs jest uruchamiany z domyślnym plikiem config.json. Możesz całkowicie zastąpić ten plik lub zaktualizować konfigurację JSON, używając reprezentacji konfiguracji JsonNode.

Aby udostępnić niestandardowy plik konfiguracji JSON, wywołaj metodę WithConfigurationFile(IResourceBuilder<AzureEventHubsEmulatorResource>, String):

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithConfigurationFile("./messaging/custom-config.json");
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Powyższy kod konfiguruje kontener emulatora usługi Event Hubs do używania niestandardowego pliku konfiguracji JSON znajdującego się w ./messaging/custom-config.json. Zostanie on zainstalowany w ścieżce /Eventhubs_Emulator/ConfigFiles/Config.json w kontenerze jako plik tylko do odczytu. Aby zamiast tego zastąpić określone właściwości w konfiguracji domyślnej, wywołaj metodę WithConfiguration(IResourceBuilder<AzureEventHubsEmulatorResource>, Action<JsonNode>):

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("event-hubs")
                       .RunAsEmulator(emulator =>
                       {
                           emulator.WithConfiguration(
                               (JsonNode configuration) =>
                               {
                                   var userConfig = configuration["UserConfig"];
                                   var ns = userConfig["NamespaceConfig"][0];
                                   var firstEntity = ns["Entities"][0];
                                   
                                   firstEntity["PartitionCount"] = 5;
                               });
                       });

eventHubs.AddHub("messages");

builder.AddProject<Projects.ExampleService>()
       .WithReference(eventHubs);

// After adding all resources, run the app...

Powyższy kod pobiera węzeł UserConfig z konfiguracji domyślnej. Następnie aktualizuje PartitionCount pierwszego elementu do 5.

Kontrola stanu integracji hostingu

Integracja hostowania Azure Event Hubs automatycznie dodaje kontrolę kondycji zasobu usługi Event Hubs. Kontrola kondycji sprawdza, czy usługa Event Hubs jest uruchomiona i czy można nawiązać z nim połączenie.

Integracja hostingu opiera się na 📦 AspNetCore.HealthChecks,Azure.Messaging.EventHubs pakiecie NuGet.

Client integracja

Aby rozpocząć pracę z integracją klienta .NET AspireAzure Event Hubs, zainstaluj 📦Aspire.Azure. Messaging.EventHubs pakiet NuGet w projekcie korzystającym z klienta, czyli projekt aplikacji korzystającej z klienta usługi Event Hubs.

dotnet add package Aspire.Azure.Messaging.EventHubs

Obsługiwane typy klientów usługi Event Hubs

Następujące klienci centrum zdarzeń są obsługiwani przez bibliotekę wraz z odpowiednimi opcjami i klasami ustawień:

typ klienta Azure Azure klasa opcji .NET .NET Aspire, klasa ustawień
EventHubProducerClient EventHubProducerClientOptions AzureMessagingEventHubsProducerSettings
EventHubBufferedProducerClient EventHubBufferedProducerClientOptions AzureMessagingEventHubsBufferedProducerSettings
EventHubConsumerClient EventHubConsumerClientOptions AzureMessagingEventHubsConsumerSettings
EventProcessorClient EventProcessorClientOptions AzureMessagingEventHubsProcessorSettings
PartitionReceiver PartitionReceiverOptions AzureMessagingEventHubsPartitionReceiverSettings

Typy klientów pochodzą z zestawu SDK Azure dla .NET, podobnie jak odpowiednie klasy opcji. Klasy ustawień są udostępniane przez .NET.NET Aspire. Klasy ustawień służą do konfigurowania wystąpień klienta.

Dodawanie klienta producenta usługi Event Hubs

W pliku Program.cs projektu wykorzystującego klienta wywołaj metodę rozszerzenia AddAzureEventHubProducerClient na dowolnym IHostApplicationBuilder, aby zarejestrować EventHubProducerClient do użycia przy użyciu kontenera wstrzykiwania zależności. Metoda przyjmuje parametr nazwy połączenia.

builder.AddAzureEventHubProducerClient(connectionName: "event-hubs");

Wskazówka

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu usługi Event Hubs w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodanie zasobu Azure Event Hubs.

Po dodaniu EventHubProducerClientmożna pobrać wystąpienie klienta przy użyciu wstrzykiwania zależności. Na przykład aby pobrać obiekt źródła danych z przykładowej usługi, zdefiniuj go jako parametr konstruktora i upewnij się, że klasa ExampleService jest zarejestrowana w kontenerze iniekcji zależności:

public class ExampleService(EventHubProducerClient client)
{
    // Use client...
}

Aby uzyskać więcej informacji, zobacz:

Dodatkowe interfejsy API do rozważenia

Integracja klienta zapewnia dodatkowe interfejsy API do konfigurowania instancji klienta. Jeśli musisz zarejestrować klienta usługi Event Hubs, rozważ następujące interfejsy API:

typ klienta Azure Interfejs API rejestracji
EventHubProducerClient AddAzureEventHubProducerClient
EventHubBufferedProducerClient AddAzureEventHubBufferedProducerClient
EventHubConsumerClient AddAzureEventHubConsumerClient
EventProcessorClient AddAzureEventProcessorClient
PartitionReceiver AddAzurePartitionReceiverClient

Wszystkie wyżej wymienione interfejsy API zawierają opcjonalne parametry do konfigurowania wystąpień klienta.

Dodawanie klienta producenta usługi Event Hubs z kluczami

Mogą wystąpić sytuacje, w których chcesz zarejestrować wiele wystąpień EventHubProducerClient z różnymi nazwami połączeń. Aby zarejestrować klientów usługi Event Hubs z kluczami, wywołaj metodę AddKeyedAzureServiceBusClient:

builder.AddKeyedAzureEventHubProducerClient(name: "messages");
builder.AddKeyedAzureEventHubProducerClient(name: "commands");

Ważny

W przypadku korzystania z usług opartych na kluczach oczekuje się, że zasób Event Hubs skonfigurował dwa nazwane centra, jedno dla messages i jedno dla commands.

Następnie można pobrać wystąpienia klienta przy użyciu wstrzykiwania zależności. Aby na przykład pobrać klientów z usługi:

public class ExampleService(
    [KeyedService("messages")] EventHubProducerClient messagesClient,
    [KeyedService("commands")] EventHubProducerClient commandsClient)
{
    // Use clients...
}

Aby uzyskać więcej informacji, zobacz kluczowe usługi w .NET.

Dodatkowe kluczowe interfejsy API do rozważenia

Integracja klienta zapewnia dodatkowe interfejsy API do konfigurowania kluczowych wystąpień klienta. Jeśli musisz zarejestrować klienta usługi Event Hubs z kluczem, rozważ następujące interfejsy API:

typ klienta Azure API rejestracji
EventHubProducerClient AddKeyedAzureEventHubProducerClient
EventHubBufferedProducerClient AddKeyedAzureEventHubBufferedProducerClient
EventHubConsumerClient AddKeyedAzureEventHubConsumerClient
EventProcessorClient AddKeyedAzureEventProcessorClient
PartitionReceiver AddKeyedAzurePartitionReceiverClient

Wszystkie wyżej wymienione interfejsy API zawierają opcjonalne parametry do konfigurowania wystąpień klienta.

Konfiguracja

Biblioteka .NET AspireAzure Event Hubs udostępnia wiele opcji konfigurowania połączenia Azure Event Hubs na podstawie wymagań i konwencji projektu. Wymagane jest dostarczenie FullyQualifiedNamespace lub ConnectionString.

Używanie parametrów połączenia

W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings podaj nazwę parametrów połączenia podczas wywoływania builder.AddAzureEventHubProducerClient() i innych obsługiwanych klientów usługi Event Hubs. W tym przykładzie parametry połączenia nie zawierają właściwości EntityPath, więc właściwość EventHubName musi być ustawiona w wywołaniu zwrotnym ustawień:

builder.AddAzureEventHubProducerClient(
    "event-hubs",
    static settings =>
    {
        settings.EventHubName = "MyHub";
    });

Następnie informacje o połączeniu zostaną pobrane z sekcji konfiguracji ConnectionStrings. Obsługiwane są dwa formaty połączeń:

Pełna kwalifikowana przestrzeń nazw (FQN)

Zalecaną metodą jest użycie w pełni kwalifikowanej przestrzeni nazw, która współpracuje z właściwością AzureMessagingEventHubsSettings.Credential w celu nawiązania połączenia. Jeśli nie skonfigurowano poświadczeń, zostanie użyta DefaultAzureCredential.

{
  "ConnectionStrings": {
    "event-hubs": "{your_namespace}.servicebus.windows.net"
  }
}

Ciąg połączenia

Alternatywnie użyj parametrów połączenia:

{
  "ConnectionStrings": {
    "event-hubs": "Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=accesskeyname;SharedAccessKey=accesskey;EntityPath=MyHub"
  }
}

Korzystanie z dostawców konfiguracji

Biblioteka .NET AspireAzure Event Hubs obsługuje Microsoft.Extensions.Configuration. Ładuje AzureMessagingEventHubsSettings i skojarzone opcje, np. EventProcessorClientOptionsz konfiguracji, używając prefiksu klucza Aspire:Azure:Messaging:EventHubs:, a następnie nazwy konkretnego używanego klienta. Rozważmy na przykład appsettings.json, która konfiguruje niektóre opcje dla EventProcessorClient:

{
  "Aspire": {
    "Azure": {
      "Messaging": {
        "EventHubs": {
          "EventProcessorClient": {
            "EventHubName": "MyHub",
            "ClientOptions": {
              "Identifier": "PROCESSOR_ID"
            }
          }
        }
      }
    }
  }
}

Typ opcji można również skonfigurować przy użyciu opcjonalnego parametru Action<IAzureClientBuilder<EventProcessorClient, EventProcessorClientOptions>> configureClientBuilder metody AddAzureEventProcessorClient. Aby na przykład ustawić identyfikator klienta procesora dla tego klienta:

builder.AddAzureEventProcessorClient(
    "event-hubs",
    configureClientBuilder: clientBuilder => clientBuilder.ConfigureOptions(
        options => options.Identifier = "PROCESSOR_ID"));

Obserwowanie i telemetria

.NET .NET Aspire integracje automatycznie ustawiają konfiguracje do rejestrowania, śledzenia i metryk, 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 .

Rejestrowanie

Integracja .NET AspireAzure Event Hubs używa następujących kategorii dzienników:

  • Azure.Core
  • Azure.Identity

Śledzenie

Integracja .NET AspireAzure Event Hubs spowoduje emitowanie następujących działań śledzenia przy użyciu OpenTelemetry:

  • Azure.Messaging.EventHubs.*

Metryki

Integracja .NET AspireAzure Event Hubs obecnie nie obsługuje metryk domyślnie ze względu na ograniczenia SDK Azure dla .NET. Jeśli ta zmiana nastąpi w przyszłości, ta sekcja zostanie zaktualizowana, aby odzwierciedlić te zmiany.

Zobacz też