Dela via


.NET Aspire Azure Event Hubs integrering

I den här artikeln får du lära dig hur du använder .NET AspireAzure Event Hubs integrering. I Aspire.Azure.Messaging.EventHubs-biblioteket finns alternativ för att registrera följande typer:

Den här typen registreras i DI-containern för anslutning till Azure Event Hubs.

Förutsättningar

Sätta igång

Kom igång med .NET AspireAzure Event Hubs-integreringen genom att installera 📦Aspire.Azure. Messaging.EventHubs NuGet-paketet i projektet client-consuming, dvs. projektet för det program som använder Azure Event Hubsclient.

dotnet add package Aspire.Azure.Messaging.EventHubs

Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.

Klienter som stöds med alternativklasser

Följande klienter stöds av biblioteket, tillsammans med deras motsvarande alternativ och inställningsklasser:

Azure Client typ Azure Alternativklassen .NET .NET Aspire Inställningar klassen
EventHubProducerClient EventHubProducerClientOptions AzureMessagingEventHubsProducerSettings
EventHubBufferedProducerClient EventHubBufferedProducerClientOptions AzureMessagingEventHubsBufferedProducerSettings
EventHubConsumerClient EventHubConsumerClientOptions AzureMessagingEventHubsConsumerSettings
EventProcessorClient EventProcessorClientOptions AzureMessagingEventHubsProcessorSettings
PartitionReceiver PartitionReceiverOptions AzureMessagingEventHubsPartitionReceiverSettings

Den client typen kommer från Azure SDK för .NET, liksom motsvarande alternativklasser. Inställningsklasserna tillhandahålls av .NET AspireAzure Event Hubs-integreringsbiblioteket.

Exempel på användning

I följande exempel förutsätts att du har en Azure Event Hubs namnrymd och en händelsehubb som skapats och vill konfigurera en EventHubProducerClient för att skicka händelser till händelsehubben. EventHubBufferedProducerClient, EventHubConsumerClient, EventProcessorClientoch PartitionReceiverkonfigureras på ett liknande sätt.

I den Program.cs-filen för ditt client-förbrukande projekt anropar du AddAzureEventHubProducerClient-tillägget för att registrera en EventHubProducerClient för användning via containern för beroendeinjektion.

builder.AddAzureEventHubProducerClient("eventHubsConnectionName");

Du kan sedan hämta den EventHubProducerClient-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta client från en tjänst:

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

Mer information finns i Azure. Dokumentationen för Messaging.EventHubs för exempel på hur man använder EventHubProducerClient.

Användning av appvärdtjänst

Om du vill lägga till Azure Event Hub-värdtjänststöd i din IDistributedApplicationBuilder, installerar du 📦Aspire.Hosting.Azure.EventHubs NuGet-paket i appvärd projekt.

dotnet add package Aspire.Hosting.Azure.EventHubs

I ditt appvärdprojekt lägger du till en Event Hubs-anslutning och en Event Hub-resurs, och använder anslutningen med hjälp av följande metoder:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Metoden AddAzureEventHubs läser anslutningsinformation från AppHost-konfigurationen (till exempel från "användarhemligheter") under ConnectionStrings:eventHubsConnectionName konfigurationsnyckel. Metoden WithReference skickar anslutningsinformationen till en anslutningssträng med namnet eventHubsConnectionName i ExampleService-projektet.

Från och med .NET Aspire 8.1 har Azure EventHubs-tillägget för .NET Aspire stöd för att starta en lokal emulator för EventHubs. Du kan använda emulatorn genom att använda RunAsEmulator()-tilläggsmetoden på följande sätt:

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

Emulatorn för Azure EventHubs resulterar i att två containerresurser startas inom .NET Aspire, härledda från namnet på Event Hubs-resursen.

Viktig

Även om vi skapar en händelsehubb med hjälp av AddEventHub samtidigt som namnområdet, från och med .NET.NET Aspire version preview-5, kommer anslutningssträngen inte att innehålla egenskapen EntityPath, så egenskapen EventHubName måste anges i inställningarnas återanrop för önskad client. Framtida versioner av Aspire innehåller egenskapen EntityPath i anslutningssträngen och kräver inte att egenskapen EventHubName anges i det här scenariot.

I Program.cs-filen med ExampleServicekan anslutningen användas genom att anropa de stödda Event Hubs-tilläggsmetoderna client.

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

Konfiguration

.NET Aspire Azure Event Hubs-biblioteket innehåller flera alternativ för att konfigurera Azure Event Hubs-anslutningen baserat på kraven och konventionerna i ditt projekt. Antingen en FullyQualifiedNamespace eller en ConnectionString måste anges.

Använda en anslutningssträng

När du använder en anslutningssträng från ConnectionStrings konfigurationsavsnittet anger du namnet på anslutningssträngen när du anropar builder.AddAzureEventHubProducerClient() och andra Event Hubs-klienter som stöds. I det här exemplet innehåller anslutningssträngen inte egenskapen EntityPath, så egenskapen EventHubName måste anges i inställningsåteranropet:

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

Och sedan hämtas anslutningsinformationen från avsnittet ConnectionStrings konfiguration. Två anslutningsformat stöds:

Fullständigt kvalificerat namnområde (FQN)

Den rekommenderade metoden är att använda ett fullständigt kvalificerat namnområde som fungerar med egenskapen AzureMessagingEventHubsSettings.Credential för att upprätta en anslutning. Om inga autentiseringsuppgifter har konfigurerats används DefaultAzureCredential.

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

Anslutningssträng

Du kan också använda en anslutningssträng:

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

Använda konfigurationsprovidrar

.NET Aspire Azure Event Hubs-biblioteket stöder Microsoft.Extensions.Configuration. Den läser in AzureMessagingEventHubsSettings och associerade alternativ, t.ex. EventProcessorClientOptions, från konfigurationen med hjälp av Aspire:Azure:Messaging:EventHubs:-nyckelprefixet följt av namnet på den specifika client som används. Tänk till exempel på appsettings.json som konfigurerar några av alternativen för en EventProcessorClient:

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

Du kan också konfigurera typ av alternativ med hjälp av den valfria parametern Action<IAzureClientBuilder<EventProcessorClient, EventProcessorClientOptions>> configureClientBuilder för metoden AddAzureEventProcessorClient. Om du till exempel vill ange processorns client-ID för den här client:

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

Observerbarhet och telemetri

.NET .NET Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i översikten över .NET.NET Aspire integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.

Skogsavverkning

.NET Aspire Azure Event Hubs-integreringen använder följande loggkategorier:

  • Azure.Core
  • Azure.Identity

Spårning

.NET Aspire Azure Event Hubs-integreringen genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:

  • "Azure.Messaging.EventHubs.*"

Mätvärden

Den .NET AspireAzure Event Hubs integreringen stöder för närvarande inte mått som standard på grund av begränsningar med Azure SDK för .NET. Om detta ändras i framtiden uppdateras det här avsnittet för att återspegla dessa ändringar.

Se även