.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:
- EventHubProducerClient
- EventHubBufferedProducerClient
- EventHubConsumerClient
- EventProcessorClient
- PartitionReceiver
Den här typen registreras i DI-containern för anslutning till Azure Event Hubs.
Förutsättningar
- Azure prenumeration: skapa en kostnadsfri prenumeration.
- Azure Event Hubs-namnområde: För mer information, se lägg till ett Event Hubs-namnområde. Du kan också använda en anslutningssträng som inte rekommenderas i produktionsmiljöer.
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
, EventProcessorClient
och PartitionReceiver
konfigureras 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 ExampleService
kan 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
.NET Aspire