Sdílet prostřednictvím


integrace .NET AspireAzure Event Hubs

V tomto článku se dozvíte, jak používat integraci .NET AspireAzure Event Hubs. Knihovna Aspire.Azure.Messaging.EventHubs nabízí možnosti registrace následujících typů:

Tento typ je zaregistrovaný v kontejneru DI pro připojení k Azure Event Hubs.

Požadavky

Začněte

Pokud chcete začít s integrací .NET AspireAzure Event Hubs, nainstalujte balíček NuGet 📦Aspire.Azure.Messaging.EventHubs do projektu využívajícího client, tedy projektu aplikace používající Azure Event Hubsclient.

dotnet add package Aspire.Azure.Messaging.EventHubs

Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.

Podporovaní klienti s třídami možností

Knihovna podporuje následující klienty spolu s odpovídajícími možnostmi a třídami nastavení:

typ AzureClient Azure Options třída .NET .NET Aspire Settings – třída
EventHubProducerClient EventHubProducerClientOptions AzureMessagingEventHubsProducerSettings
EventHubBufferedProducerClient EventHubBufferedProducerClientOptions AzureMessagingEventHubsBufferedProducerSettings
EventHubConsumerClient EventHubConsumerClientOptions AzureMessagingEventHubsConsumerSettings
EventProcessorClient EventProcessorClientOptions AzureMessagingEventHubsProcessorSettings
PartitionReceiver PartitionReceiverOptions AzureMessagingEventHubsPartitionReceiverSettings

Typ client pochází ze sady Azure SDK pro .NET, stejně jako odpovídající třídy možností. Třídy nastavení poskytuje knihovna integrace .NET AspireAzure Event Hubs.

Příklad využití

Následující příklad předpokládá, že máte Azure Event Hubs obor názvů a centrum událostí vytvořené a chcete nakonfigurovat EventHubProducerClient pro odesílání událostí do centra událostí. EventHubBufferedProducerClient, EventHubConsumerClient, EventProcessorClienta PartitionReceiverjsou nakonfigurované podobným způsobem.

Ve souboru Program.cs projektu využívajícího clientvyvolejte rozšíření AddAzureEventHubProducerClient a zaregistrujte EventHubProducerClient pro použití prostřednictvím kontejneru pro injektování závislostí.

builder.AddAzureEventHubProducerClient("eventHubsConnectionName");

Potom můžete načíst instanci EventHubProducerClient pomocí vkládání závislostí. Pokud chcete například načíst client ze služby:

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

Další informace naleznete v dokumentaci Azureke službě Messaging.EventHubs, kde najdete příklady použití EventHubProducerClient.

Využití hostitele aplikace

Pokud chcete do svého IDistributedApplicationBuilderpřidat podporu hostování Event Hub Azure, nainstalujte 📦Aspire.Hosting.Azure.EventHubs NuGet balíček v projektu hostitele aplikace.

dotnet add package Aspire.Hosting.Azure.EventHubs

V hostitelském projektu aplikace přidejte připojení k Event Hubu a prostředek Event Hubu a využijte toto připojení pomocí následujících metod:

var builder = DistributedApplication.CreateBuilder(args);

var eventHubs = builder.AddAzureEventHubs("eventHubsConnectionName")
                       .AddEventHub("MyHub");

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

Metoda AddAzureEventHubs načte informace o připojení z konfigurace AppHostu (například z tajných kódů uživatelů) pod konfiguračním klíčem ConnectionStrings:eventHubsConnectionName. Metoda WithReference předá informace o připojení do připojovacího řetězce s názvem eventHubsConnectionName v projektu ExampleService.

Od .NET Aspire 8.1 podporuje rozšíření Azure EventHubs pro .NET Aspire spuštění místního emulátoru pro EventHubs. Emulátor můžete použít použitím metody rozšíření RunAsEmulator() následujícím způsobem:

var eventHubs = builder.AddAzureEventHubs("eventHubsConnectionName")
                       .RunAsEmulator()
                       .AddEventHub("MyHub");

Emulátor pro Azure EventHubs vede ke spuštění dvou kontejnerových prostředků uvnitř .NET Aspire, který je odvozen z názvu prostředku služby Event Hubs.

Důležitý

I když vytváříme Event Hub pomocí AddEventHub ve stejnou dobu jako obor názvů, od .NET.NET Aspire verze preview-5, připojovací řetězec nebude obsahovat vlastnost EntityPath, takže vlastnost EventHubName musí být nastavena ve zpětném volání nastavení upřednostňovaného client. Budoucí verze Aspire budou zahrnovat vlastnost EntityPath v připojovacím řetězci a nebude vyžadovat, aby byla v tomto scénáři nastavena vlastnost EventHubName.

V Program.cs souboru ExampleServicelze připojení využít pomocí volání podporovaných metod rozšíření Event Hubs client.

builder.AddAzureEventProcessorClient(
    "eventHubsConnectionName",
    static settings =>
    {
        settings.EventHubName = "MyHub";
    });

Konfigurace

Knihovna .NET AspireAzure Event Hubs poskytuje několik možností konfigurace připojení Azure Event Hubs na základě požadavků a konvencí projektu. Je nutné zadat FullyQualifiedNamespace nebo ConnectionString.

Použijte připojovací řetězec

Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings zadejte název připojovacího řetězce při volání builder.AddAzureEventHubProducerClient() a dalších podporovaných klientů služby Event Hubs. V tomto příkladu připojovací řetězec neobsahuje vlastnost EntityPath, takže vlastnost EventHubName musí být nastavena v zpětném volání nastavení:

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

A poté se z oddílu konfigurace ConnectionStrings načtou informace o připojení. Podporují se dva formáty připojení:

Plně kvalifikovaný obor názvů (FQN)

Doporučeným přístupem je použít plně kvalifikovaný obor názvů, který pracuje s vlastností AzureMessagingEventHubsSettings.Credential pro navázání připojení. Pokud nejsou nakonfigurované žádné přihlašovací údaje, použije se DefaultAzureCredential.

{
  "ConnectionStrings": {
    "eventHubsConnectionName": "{your_namespace}.servicebus.windows.net"
  }
}

Připojovací řetězec

Případně použijte připojovací řetězec:

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

Použití zprostředkovatelů konfigurace

Knihovna .NET AspireAzure Event Hubs podporuje Microsoft.Extensions.Configuration. Načte AzureMessagingEventHubsSettings a související možnosti, například EventProcessorClientOptions, z konfigurace s použitím předpony klíče Aspire:Azure:Messaging:EventHubs:, po které následuje název konkrétního používaného client. Představte si například appsettings.json, který konfiguruje některé možnosti pro EventProcessorClient:

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

Typ Možnosti můžete také nastavit pomocí volitelného parametru Action<IAzureClientBuilder<EventProcessorClient, EventProcessorClientOptions>> configureClientBuilder metody AddAzureEventProcessorClient. Pokud chcete například nastavit ID client procesoru pro tento client:

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

Pozorovatelnost a telemetrie

.NET .NET Aspire integrace automaticky nastaví konfigurace pro protokolování, trasování a metriky, 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 Event Hubs používá následující kategorie protokolů:

  • Azure.Core
  • Azure.Identity

Trasování

Integrace .NET AspireAzure Event Hubs pomocí OpenTelemetryvygeneruje následující aktivity trasování:

  • "Azure.Messaging.EventHubs.*"

Metriky

Integrace .NET AspireAzure Event Hubs 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é