.NET Aspire Azure Event Hubs-Integration
In diesem Artikel erfahren Sie, wie Sie die .NET AspireAzure Event Hubs Integration verwenden. Die Aspire.Azure.Messaging.EventHubs
-Bibliothek bietet Optionen zum Registrieren der folgenden Typen:
- EventHubProducerClient
- EventHubBufferedProducerClient
- EventHubConsumerClient
- EventProcessorClient
- PartitionReceiver
Diese Typen werden im DI-Container registriert, um eine Verbindung mit Azure Event Hubsherzustellen.
Voraussetzungen
- Azure Abonnement: ein kostenloseserstellen.
- Azure Event Hubs Namespace: Weitere Informationen finden Sie unter Hinzufügen eines Event Hubs-Namespace. Alternativ können Sie eine Verbindungszeichenfolge verwenden, die in Produktionsumgebungen nicht empfohlen wird.
Loslegen
Um mit der .NET AspireAzure Event Hubs-Integration zu beginnen, installieren Sie das NuGet-Paket 📦Aspire.Azure.Messaging.EventHubs im Projekt client-Nutzung, also das Projekt für die Anwendung, die die Azure Event Hubsclientverwendet.
dotnet add package Aspire.Azure.Messaging.EventHubs
Weitere Informationen finden Sie unter dotnet add package oder Verwalten Sie Paketabhängigkeiten in .NET Anwendungen.
Unterstützte Clients mit Optionenklassen
Die folgenden Clients werden von der Bibliothek zusammen mit den entsprechenden Optionen und Einstellungsklassen unterstützt:
Azure Client Typ | Azure Options-Klasse | .NET .NET Aspire Einstellungen-Klasse |
---|---|---|
EventHubProducerClient |
EventHubProducerClientOptions |
AzureMessagingEventHubsProducerSettings |
EventHubBufferedProducerClient |
EventHubBufferedProducerClientOptions |
AzureMessagingEventHubsBufferedProducerSettings |
EventHubConsumerClient |
EventHubConsumerClientOptions |
AzureMessagingEventHubsConsumerSettings |
EventProcessorClient |
EventProcessorClientOptions |
AzureMessagingEventHubsProcessorSettings |
PartitionReceiver |
PartitionReceiverOptions |
AzureMessagingEventHubsPartitionReceiverSettings |
Der client Typ stammt aus dem Azure SDK für .NET, ebenso wie die entsprechenden Optionsklassen. Die Konfigurationseinstellungen werden von der .NET AspireAzure Event Hubs Integrationsbibliothek bereitgestellt.
Beispielverwendung
Im folgenden Beispiel wird davon ausgegangen, dass Sie einen Azure Event Hubs Namespace und einen Event Hub erstellt haben. Sie möchten eine EventHubProducerClient
konfigurieren, um Ereignisse an den Event Hub zu senden. Die EventHubBufferedProducerClient
, EventHubConsumerClient
, EventProcessorClient
und PartitionReceiver
werden auf ähnliche Weise konfiguriert.
Rufen Sie in der datei Program.cs Ihres client-verbrauchenden Projekts die AddAzureEventHubProducerClient
-Erweiterung auf, um eine EventHubProducerClient
für die Verwendung über den Container zum Einfügen von Abhängigkeiten zu registrieren.
builder.AddAzureEventHubProducerClient("eventHubsConnectionName");
Anschließend können Sie die EventHubProducerClient
Instanz mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die client von einem Dienst ab:
public class ExampleService(EventHubProducerClient client)
{
// Use client...
}
Weitere Informationen sehen Sie in der Dokumentation "Azure.Messaging.EventHubs" mit Beispielen für die Verwendung des EventHubProducerClient
.
Nutzung des App-Hosts
Um Azure Event Hub-Hostingunterstützung zu Ihrem IDistributedApplicationBuilderhinzuzufügen, installieren Sie die 📦Aspire. Hosting.Azure. EventHubs NuGet-Paket im App-Host Projekt.
dotnet add package Aspire.Hosting.Azure.EventHubs
Fügen Sie in Ihrem App-Hostprojekt eine Event Hubs-Verbindung und eine Event Hub-Ressource hinzu, und nutzen Sie die Verbindung mit den folgenden Methoden:
var builder = DistributedApplication.CreateBuilder(args);
var eventHubs = builder.AddAzureEventHubs("eventHubsConnectionName")
.AddEventHub("MyHub");
var exampleService = builder.AddProject<Projects.ExampleService>()
.WithReference(eventHubs);
Die AddAzureEventHubs
-Methode liest Verbindungsinformationen aus der Konfiguration von AppHost aus (zum Beispiel aus "Benutzergeheimnissen") unter dem Konfigurationsschlüssel ConnectionStrings:eventHubsConnectionName
. Die WithReference
-Methode übergibt die Verbindungsinformationen an eine Verbindungszeichenfolge mit dem Namen eventHubsConnectionName
im ExampleService
-Projekt.
Ab .NET Aspire 8.1 unterstützt die Azure EventHubs-Erweiterung für .NET Aspire das Starten eines lokalen Emulators für EventHubs. Sie können den Emulator verwenden, indem Sie die RunAsEmulator()
Erweiterungsmethode wie folgt anwenden:
var eventHubs = builder.AddAzureEventHubs("eventHubsConnectionName")
.RunAsEmulator()
.AddEventHub("MyHub");
Der Emulator für Azure EventHubs führt dazu, dass zwei Containerressourcen innerhalb .NET Aspire gestartet werden, die vom Namen des Ereignishubs-Ressourcennamens abgeleitet wurden.
Wichtig
Obwohl wir einen Event Hub mit dem AddEventHub
gleichzeitig mit dem Namespace erstellen, enthält die Verbindungszeichenfolge ab .NET.NET Aspire Version preview-5
nicht die EntityPath
-Eigenschaft, sodass die EventHubName
-Eigenschaft im Einstellungsrückruf für die bevorzugte clientfestgelegt werden muss. Zukünftige Versionen von Aspire enthalten die EntityPath
-Eigenschaft in der Verbindungszeichenfolge und erfordern nicht, dass die EventHubName
-Eigenschaft in diesem Szenario festgelegt wird.
In der Program.cs-Datei von ExampleService
kann die Verbindung durch Aufruf der unterstützten Event Hubs client-Erweiterungsmethoden genutzt werden:
builder.AddAzureEventProcessorClient(
"eventHubsConnectionName",
static settings =>
{
settings.EventHubName = "MyHub";
});
Konfiguration
Die .NET AspireAzure Event Hubs bibliothek bietet mehrere Optionen zum Konfigurieren der Azure Event Hubs Verbindung basierend auf den Anforderungen und Konventionen Ihres Projekts. Entweder ein FullyQualifiedNamespace
oder ein ConnectionString
ist zu liefern erforderlich.
Verbindungszeichenfolge verwenden
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, geben Sie den Namen der Verbindungszeichenfolge beim Aufrufen builder.AddAzureEventHubProducerClient()
und anderer unterstützter Event Hubs-Clients an. In diesem Beispiel enthält die Verbindungszeichenfolge nicht die Eigenschaft EntityPath
, sodass die Eigenschaft EventHubName
im Einstellungsrückruf festgelegt werden muss.
builder.AddAzureEventHubProducerClient(
"eventHubsConnectionName",
static settings =>
{
settings.EventHubName = "MyHub";
});
Anschließend werden die Verbindungsinformationen aus dem Konfigurationsabschnitt ConnectionStrings
abgerufen. Zwei Verbindungsformate werden unterstützt:
Vollqualifizierter Namespace (FQN)
Der empfohlene Ansatz besteht darin, einen vollqualifizierten Namespace zu verwenden, der mit der AzureMessagingEventHubsSettings.Credential
-Eigenschaft funktioniert, um eine Verbindung herzustellen. Wenn keine Anmeldeinformationen konfiguriert sind, wird das DefaultAzureCredential verwendet.
{
"ConnectionStrings": {
"eventHubsConnectionName": "{your_namespace}.servicebus.windows.net"
}
}
Verbindungszeichenfolge
Alternativ können Sie eine Verbindungszeichenfolge verwenden:
{
"ConnectionStrings": {
"eventHubsConnectionName": "Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=accesskeyname;SharedAccessKey=accesskey;EntityPath=MyHub"
}
}
Konfigurationsanbieter verwenden
Die .NET AspireAzure Event Hubs-Bibliothek unterstützt Microsoft.Extensions.Configuration. Es lädt die AzureMessagingEventHubsSettings
sowie die zugehörigen Optionen, z. B. EventProcessorClientOptions
, aus der Konfiguration mithilfe des Schlüsselpräfixes Aspire:Azure:Messaging:EventHubs:
, gefolgt vom Namen des verwendeten spezifischen client. Betrachten Sie beispielsweise die appsettings.json, mit der einige der Optionen für eine EventProcessorClient
konfiguriert werden:
{
"Aspire": {
"Azure": {
"Messaging": {
"EventHubs": {
"EventProcessorClient": {
"EventHubName": "MyHub",
"ClientOptions": {
"Identifier": "PROCESSOR_ID"
}
}
}
}
}
}
}
Sie können den Optionstyp auch mit dem optionalen Action<IAzureClientBuilder<EventProcessorClient, EventProcessorClientOptions>> configureClientBuilder
-Parameter der AddAzureEventProcessorClient
-Methode festlegen. Um beispielsweise die client-ID des Prozessors für diese clientfestzulegen:
builder.AddAzureEventProcessorClient(
"eventHubsConnectionName",
configureClientBuilder: clientBuilder => clientBuilder.ConfigureOptions(
options => options.Identifier = "PROCESSOR_ID"));
Observability und Telemetrie
.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als den Säulen der Observabilitybezeichnet werden. Weitere Informationen zur Integrationsbeobachtbarkeit und Telemetrie finden Sie unter .NET.NET Aspire Integrationsübersicht. Abhängig vom Back-End-Dienst unterstützen manche Integrationen möglicherweise nur einige dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Configuration beschrieben sind.
Protokollierung
Die .NET AspireAzure Event Hubs-Integration verwendet die folgenden Protokollkategorien:
Azure.Core
Azure.Identity
Verfolgung
Die .NET AspireAzure Event Hubs Integration gibt die folgenden Tracing-Aktivitäten mithilfe von OpenTelemetryaus.
- Azure.Messaging.EventHubs.*
Metriken
Die .NET AspireAzure Event Hubs-Integration unterstützt standardmäßig derzeit keine Metriken aufgrund von Einschränkungen mit dem Azure SDK für .NET. Wenn sich dies in Zukunft ändert, wird dieser Abschnitt aktualisiert, um diese Änderungen widerzuspiegeln.