Azure Event Hubs-Ereignisprozessorclientbibliothek für .NET– Version 5.9.3
Azure Event Hubs ist ein hochgradig skalierbarer Veröffentlichungs-/Abonnementdienst, der Millionen von Ereignissen pro Sekunde erfassen und an mehrere Consumer streamen kann. Auf diese Weise können Sie die riesigen Datenmengen verarbeiten und analysieren, die von Ihren verbundenen Geräten und Anwendungen erzeugt werden. Nachdem Event Hubs die Daten gesammelt hat, können Sie sie mithilfe eines beliebigen Echtzeitanalyseanbieters oder mit Batch-/Speicheradaptern abrufen, transformieren und speichern. Wenn Sie mehr über Azure Event Hubs erfahren möchten, lesen Sie unter Was ist Event Hubs?
Die Ereignisprozessorclientbibliothek ist ein Begleiter zur Azure Event Hubs Clientbibliothek und stellt einen eigenständigen Client für die Nutzung von Ereignissen auf robuste, dauerhafte und skalierbare Weise bereit, die für die meisten Produktionsszenarien geeignet ist. Der Ereignisprozessor ist eine meinungsbasierte Implementierung, die mit Azure Storage-Blobs erstellt wurde und für folgendes empfohlen wird:
Lesen und Verarbeiten von Ereignissen in allen Partitionen eines Event Hubs im großen Stil mit Resilienz bei vorübergehenden Fehlern und zeitweiligen Netzwerkproblemen.
Gemeinsame Verarbeitung von Ereignissen, bei denen mehrere Prozessoren dynamisch die Verantwortung im Kontext einer Consumergruppe verteilen und teilen, wobei die Last ordnungsgemäß verwaltet wird, während Prozessoren hinzugefügt und aus der Gruppe entfernt werden.
Verwalten von Prüfpunkten und status für die dauerhafte Verarbeitung mithilfe von Azure Storage-Blobs als zugrunde liegendem Datenspeicher.
Quellcode | Paket (NuGet) | API-Referenzdokumentation | Produktdokumentation | Leitfaden zur Problembehandlung
Erste Schritte
Voraussetzungen
Azure-Abonnement: Für die Verwendung von Azure-Diensten, einschließlich Azure Event Hubs, benötigen Sie ein Abonnement. Wenn Sie nicht über ein vorhandenes Azure-Konto verfügen, können Sie sich für eine kostenlose Testversion registrieren oder Ihre Visual Studio-Abonnementvorteile nutzen, wenn Sie ein Konto erstellen.
Event Hubs-Namespace mit einem Event Hub: Für die Interaktion mit Azure Event Hubs benötigen Sie auch einen Namespace und einen Event Hub. Wenn Sie mit dem Erstellen von Azure-Ressourcen nicht vertraut sind, können Sie die Schritt-für-Schritt-Anleitung zum Erstellen eines Event Hubs mit dem Azure-Portal befolgen. Dort finden Sie auch ausführliche Anweisungen zum Verwenden von Azure CLI-, Azure PowerShell- oder Arm-Vorlagen (Azure Resource Manager) zum Erstellen eines Event Hubs.
Azure Storage-Konto mit Blob storage: Um Prüfpunkte beizubehalten und den Besitz in Azure Storage zu steuern, benötigen Sie ein Azure Storage-Konto mit verfügbaren Blobs. Für das Azure Storage-Konto, das für den Prozessor verwendet wird, sollte vorläufiges Löschen und Blobversionsverwaltung deaktiviert sein. Wenn Sie mit Azure Storage-Konten nicht vertraut sind, können Sie die schrittweise Anleitung zum Erstellen eines Speicherkontos mithilfe des Azure-Portal befolgen. Dort finden Sie auch ausführliche Anweisungen zum Verwenden von Azure CLI-, Azure PowerShell- oder Arm-Vorlagen (Azure Resource Manager) zum Erstellen von Speicherkonten.
Azure Storage-Blobcontainer: Prüfpunkt- und Besitzdaten in Azure Storage werden in Blobs in einem bestimmten Container geschrieben. Erfordert
EventProcessorClient
einen vorhandenen Container und erstellt nicht implizit einen Container, um sich vor versehentlichen Fehlkonfigurationen zu schützen. Es wird empfohlen, für jede Event Hub- und Consumergruppenkombination einen eindeutigen Container zu verwenden. Wenn Sie mit Azure Storage-Containern nicht vertraut sind, können Sie die Dokumentation zum Verwalten von Containern lesen. Dort finden Sie ausführliche Anweisungen zur Verwendung von .NET, der Azure CLI oder Azure PowerShell zum Erstellen eines Containers.C# 8.0: Die Azure Event Hubs-Clientbibliothek verwendet neue Features, die in C# 8.0 eingeführt wurden. Um die C# 8.0-Syntax nutzen zu können, empfiehlt es sich, das .NET Core SDK 3.0 oder höher mit einer Sprachversion von
latest
zu kompilieren.Visual Studio-Benutzer, die die C# 8.0-Syntax vollständig nutzen möchten, müssen Visual Studio 2019 oder höher verwenden. Visual Studio 2019 (einschließlich der kostenlosen Community-Edition) kann hier heruntergeladen werden. Benutzer von Visual Studio 2017 können die C# 8-Syntax nutzen, indem sie das NuGet-Paket Microsoft.Net.Compilers verwenden und die Sprachversion festlegen, obwohl die Bearbeitungserfahrung möglicherweise nicht ideal ist.
Sie können die Bibliothek weiterhin mit früheren C#-Sprachversionen verwenden, müssen aber asynchrone aufzählbare und asynchrone verwerfbare Member manuell verwalten, anstatt von der neuen Syntax zu profitieren. Sie können weiterhin jede Frameworkversion verwenden, die von Ihrem .NET Core SDK unterstützt wird, einschließlich früherer Versionen von .NET Core oder .NET Framework. Weitere Informationen finden Sie unter Angeben von Zielframeworks.
Wichtiger Hinweis: Um die Beispiele und die Beispiele ohne Änderung zu erstellen oder auszuführen, ist die Verwendung von C# 11.0 erforderlich. Sie können die Beispiele weiterhin ausführen, wenn Sie sie für andere Sprachversionen optimieren möchten.
Um schnell die benötigten Ressourcen in Azure zu erstellen und Verbindungszeichenfolgen für diese zu erhalten, können Sie unsere Beispielvorlage bereitstellen, indem Sie auf Folgendes klicken:
Installieren des Pakets
Installieren Sie die Azure Event Hubs-Ereignisprozessorclientbibliothek für .NET mithilfe von NuGet:
dotnet add package Azure.Messaging.EventHubs.Processor
Authentifizieren des Clients
Abrufen einer Event Hubs-Verbindungszeichenfolge
Damit die Event Hubs-Clientbibliothek mit einem Event Hub interagieren kann, muss sie verstehen, wie eine Verbindung hergestellt und autorisiert werden kann. Die einfachste Möglichkeit hierfür ist die Verwendung einer Verbindungszeichenfolge, die beim Erstellen eines Event Hubs-Namespaces automatisch erstellt wird. Wenn Sie mit der Verwendung von Verbindungszeichenfolgen mit Event Hubs nicht vertraut sind, können Sie die Schritt-für-Schritt-Anleitung befolgen, um eine Event Hubs-Verbindungszeichenfolge zu erhalten.
Abrufen einer Azure Storage-Verbindungszeichenfolge
Damit der Ereignisprozessorclient Azure Storage-Blobs für Prüfpunkte verwenden kann, muss er verstehen, wie eine Verbindung mit einem Speicherkonto hergestellt und damit autorisiert werden kann. Die einfachste Methode hierfür ist die Verwendung einer Verbindungszeichenfolge, die zum Zeitpunkt der Erstellung des Speicherkontos generiert wird. Wenn Sie mit der Autorisierung von Verbindungszeichenfolgen für Speicherkonten in Azure nicht vertraut sind, können Sie die schrittweise Anleitung zum Konfigurieren von Azure Storage-Verbindungszeichenfolgen befolgen.
Sobald Sie über die Verbindungszeichenfolgen verfügen, finden Sie unter Erstellen eines Ereignisprozessorclients ein Beispiel dafür, wie Sie sie zum Erstellen des Prozessors verwenden.
Wichtige Begriffe
Ein Ereignisprozessor ist ein Konstrukt, das die Verantwortlichkeiten verwalten soll, die mit dem Herstellen einer Verbindung mit einem bestimmten Event Hub und der Verarbeitung von Ereignissen aus jeder seiner Partitionen im Kontext einer bestimmten Consumergruppe verbunden sind. Die Verarbeitung von Ereignissen, die aus der Partition gelesen werden, und die Behandlung auftretender Fehler wird vom Ereignisprozessor an den von Ihnen bereitgestellten Code delegiert, sodass sich Ihre Logik auf die Bereitstellung des geschäftlichen Nutzens konzentrieren kann, während der Prozessor die Aufgaben im Zusammenhang mit dem Lesen von Ereignissen, der Verwaltung der Partitionen und der Beibehaltung des Zustands in Form von Prüfpunkten übernimmt.
Prüfpunkte sind ein Prozess, bei dem Leser ihre Position für Ereignisse markieren und beibehalten, die für eine Partition verarbeitet wurden. Die Prüfpunkterstellung liegt in der Verantwortung des Consumers und erfolgt auf einer einzelnen Partition, in der Regel im Kontext einer bestimmten Consumergruppe. Für bedeutet dies
EventProcessorClient
, dass der Prozessor für eine Consumergruppe und eine Partitionskombination seine aktuelle Position im Ereignisdatenstrom nachverfolgen muss. Weitere Informationen finden Sie unter Prüfpunkte in der Event Hubs-Produktdokumentation.Wenn ein Ereignisprozessor eine Verbindung herstellt, beginnt er mit dem Lesen von Ereignissen am Prüfpunkt, die zuvor vom letzten Prozessor dieser Partition in dieser Consumergruppe beibehalten wurden, sofern vorhanden. Wenn ein Ereignisprozessor Ereignisse in der Partition liest und darauf reagiert, sollte er in regelmäßigen Abständen Prüfpunkte erstellen, um die Ereignisse von Downstreamanwendungen als "abgeschlossen" zu markieren und Resilienz bereitzustellen, wenn ein Ereignisprozessor oder die Umgebung, in der er gehostet wird, ausfallen sollte. Falls dies erforderlich ist, ist es möglich, Ereignisse, die zuvor als "abgeschlossen" gekennzeichnet wurden, erneut zu verarbeiten, indem sie einen früheren Offset durch diesen Prüfpunktprozess angeben.
Eine Partition ist eine geordnete Sequenz Abfolge von Ereignissen, die in einem Event Hub erfolgt. Partitionen sind ein Mittel der Datenorganisation, die mit der von Ereignisconsumer geforderten Parallelität verbunden ist. Azure Event Hubs ermöglicht Nachrichtenstreaming über ein partitioniertes Consumermuster, bei dem jeder Consumer nur eine bestimmte Teilmenge oder Partition des Nachrichtendatenstroms liest. Neu eingehende Ereignisse werden am Ende dieser Sequenz hinzugefügt. Die Anzahl der Partitionen wird zum Zeitpunkt der Erstellung eines Event Hubs angegeben und kann nicht geändert werden.
Eine Consumergruppe ist eine Ansicht eines vollständigen Event Hubs. Consumergruppen ermöglichen es mehreren verarbeitenden Anwendungen, jeweils eine eigene Ansicht des Ereignisdatenstroms zu verwenden und den Datenstrom unabhängig voneinander in ihrem eigenen Tempo und von ihrer eigenen Position aus zu lesen. Pro Consumergruppe können höchstens fünf gleichzeitige Leser auf einer Partition vorhanden sein. Es wird jedoch empfohlen, nur einen aktiven Consumer für eine bestimmte Partitions- und Consumergruppenkopplung zu verwenden. Jeder aktive Leser empfängt alle Ereignisse aus seiner Partition. Wenn sich mehrere Reader auf derselben Partition befinden, erhalten sie doppelte Ereignisse.
Weitere Konzepte und ausführlichere Erläuterungen finden Sie unter Event Hubs-Features.
Clientlebensdauer
Die EventProcessorClient
kann sicher zwischengespeichert und als Singleton für die Lebensdauer der Anwendung verwendet werden. Dies ist eine bewährte Methode, wenn Ereignisse regelmäßig gelesen werden. Die Clients sind für eine effiziente Verwaltung der Netzwerk-, CPU- und Arbeitsspeichernutzung verantwortlich und arbeiten daran, die Nutzung in Zeiten der Inaktivität niedrig zu halten. Der Aufruf StopProcessingAsync
oder StopProcessing
auf dem Prozessor ist erforderlich, um sicherzustellen, dass Netzwerkressourcen und andere nicht verwaltete Objekte ordnungsgemäß bereinigt werden.
Threadsicherheit
Wir garantieren, dass alle Client-instance Methoden threadsicher und unabhängig voneinander sind (Richtlinie). Dadurch wird sichergestellt, dass die Empfehlung, Clientinstanzen wiederzuverwenden, immer sicher ist, auch über Threads hinweg.
Die Datenmodelltypen, z EventData
. B. und EventDataBatch
, sind nicht threadsicher. Sie sollten nicht über Threads hinweg freigegeben oder gleichzeitig mit Clientmethoden verwendet werden.
Zusätzliche Konzepte
Clientoptionen | Ereignishandler | Behandeln von Fehlern | Diagnose | Mocking (Prozessor) | Mocking (Clienttypen)
Beispiele
Erstellen eines Ereignisprozessorclients
Da EventProcessorClient
eine Abhängigkeit von Azure Storage-Blobs für die Persistenz des Zustands aufweist, müssen Sie einen BlobContainerClient
für den Prozessor bereitstellen, der für das Speicherkonto und den Container konfiguriert wurde, die verwendet werden sollen. Der Container, der zum Konfigurieren von verwendet wird, EventProcessorClient
muss vorhanden sein.
Da die keine Möglichkeit hat, EventProcessorClient
die Absicht zu kennen, einen Container anzugeben, der nicht vorhanden ist, wird der Container nicht implizit erstellt. Dies dient als Schutz vor einem falsch konfigurierten Container, der dazu führt, dass ein nicht autorisierter Prozessor den Besitz nicht teilen kann und andere Prozessoren in der Consumergruppe beeinträchtigt.
// The container specified when creating the BlobContainerClient must exist; it will
// not be implicitly created.
var storageConnectionString = "<< CONNECTION STRING FOR THE STORAGE ACCOUNT >>";
var blobContainerName = "<< NAME OF THE BLOB CONTAINER >>";
var eventHubsConnectionString = "<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>";
var eventHubName = "<< NAME OF THE EVENT HUB >>";
var consumerGroup = "<< NAME OF THE EVENT HUB CONSUMER GROUP >>";
var storageClient = new BlobContainerClient(storageConnectionString, blobContainerName);
var processor = new EventProcessorClient(storageClient, consumerGroup, eventHubsConnectionString, eventHubName);
Konfigurieren der Ereignis- und Fehlerhandler
Um zu verwenden EventProcessorClient
, müssen Handler für die Ereignisverarbeitung und Fehler bereitgestellt werden. Diese Handler gelten als eigenständig, und Entwickler sind dafür verantwortlich, sicherzustellen, dass Ausnahmen im Handlercode berücksichtigt werden.
var storageConnectionString = "<< CONNECTION STRING FOR THE STORAGE ACCOUNT >>";
var blobContainerName = "<< NAME OF THE BLOB CONTAINER >>";
var eventHubsConnectionString = "<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>";
var eventHubName = "<< NAME OF THE EVENT HUB >>";
var consumerGroup = "<< NAME OF THE EVENT HUB CONSUMER GROUP >>";
async Task processEventHandler(ProcessEventArgs eventArgs)
{
try
{
// Perform the application-specific processing for an event. This method
// is intended for illustration and is not defined in this snippet.
await DoSomethingWithTheEvent(eventArgs.Partition, eventArgs.Data);
}
catch
{
// Handle the exception from handler code
}
}
async Task processErrorHandler(ProcessErrorEventArgs eventArgs)
{
try
{
// Perform the application-specific processing for an error. This method
// is intended for illustration and is not defined in this snippet.
await DoSomethingWithTheError(eventArgs.Exception);
}
catch
{
// Handle the exception from handler code
}
}
var storageClient = new BlobContainerClient(storageConnectionString, blobContainerName);
var processor = new EventProcessorClient(storageClient, consumerGroup, eventHubsConnectionString, eventHubName);
processor.ProcessEventAsync += processEventHandler;
processor.ProcessErrorAsync += processErrorHandler;
Starten und Beenden der Verarbeitung
Die EventProcessorClient
führt die Verarbeitung im Hintergrund aus, sobald sie explizit gestartet wurde, und setzt die Verarbeitung fort, bis sie explizit beendet wurde. Dadurch kann der Anwendungscode zwar andere Aufgaben ausführen, aber es ist auch dafür verantwortlich, sicherzustellen, dass der Prozess während der Verarbeitung nicht beendet wird, wenn keine anderen Aufgaben ausgeführt werden.
var cancellationSource = new CancellationTokenSource();
cancellationSource.CancelAfter(TimeSpan.FromSeconds(45));
var storageConnectionString = "<< CONNECTION STRING FOR THE STORAGE ACCOUNT >>";
var blobContainerName = "<< NAME OF THE BLOB CONTAINER >>";
var eventHubsConnectionString = "<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>";
var eventHubName = "<< NAME OF THE EVENT HUB >>";
var consumerGroup = "<< NAME OF THE EVENT HUB CONSUMER GROUP >>";
Task processEventHandler(ProcessEventArgs eventArgs) => Task.CompletedTask;
Task processErrorHandler(ProcessErrorEventArgs eventArgs) => Task.CompletedTask;
var storageClient = new BlobContainerClient(storageConnectionString, blobContainerName);
var processor = new EventProcessorClient(storageClient, consumerGroup, eventHubsConnectionString, eventHubName);
processor.ProcessEventAsync += processEventHandler;
processor.ProcessErrorAsync += processErrorHandler;
await processor.StartProcessingAsync();
try
{
// The processor performs its work in the background; block until cancellation
// to allow processing to take place.
await Task.Delay(Timeout.Infinite, cancellationSource.Token);
}
catch (TaskCanceledException)
{
// This is expected when the delay is canceled.
}
try
{
await processor.StopProcessingAsync();
}
finally
{
// To prevent leaks, the handlers should be removed when processing is complete.
processor.ProcessEventAsync -= processEventHandler;
processor.ProcessErrorAsync -= processErrorHandler;
}
Verwenden eines Active Directory-Prinzipals mit dem Ereignisprozessorclient
Die Azure Identity-Bibliothek bietet Unterstützung für die Azure Active Directory-Authentifizierung, die für die Azure-Clientbibliotheken verwendet werden kann, einschließlich Event Hubs und Azure Storage.
Um einen Active Directory-Prinzipal zu verwenden, wird beim Erstellen des Event Hubs-Clients einer der verfügbaren Anmeldeinformationen aus Azure.Identity
der Bibliothek angegeben. Darüber hinaus werden der vollqualifizierte Event Hubs-Namespace und der Name des gewünschten Event Hubs anstelle der Event Hubs-Verbindungszeichenfolge bereitgestellt.
Um einen Active Directory-Prinzipal mit Azure Storage-Blobcontainern zu verwenden, muss beim Erstellen des Speicherclients die vollqualifizierte URL für den Container angegeben werden. Ausführliche Informationen zu den gültigen URI-Formaten für den Zugriff auf Blobspeicher finden Sie unter Benennen und Verweisen auf Container, Blobs und Metadaten.
var credential = new DefaultAzureCredential();
var blobStorageUrl ="<< FULLY-QUALIFIED CONTAINER URL (like https://myaccount.blob.core.windows.net/mycontainer) >>";
var fullyQualifiedNamespace = "<< FULLY-QUALIFIED EVENT HUBS NAMESPACE (like something.servicebus.windows.net) >>";
var eventHubName = "<< NAME OF THE EVENT HUB >>";
var consumerGroup = "<< NAME OF THE EVENT HUB CONSUMER GROUP >>";
var storageClient = new BlobContainerClient(new Uri(blobStorageUrl), credential);
var processor = new EventProcessorClient
(
storageClient,
consumerGroup,
fullyQualifiedNamespace,
eventHubName,
credential
);
Wenn Sie Azure Active Directory mit Event Hubs verwenden, muss Ihrem Prinzipal eine Rolle zugewiesen werden, die das Lesen aus Event Hubs ermöglicht, z. B. die Azure Event Hubs Data Receiver
Rolle. Weitere Informationen zur Verwendung der Azure Active Directory-Autorisierung mit Event Hubs finden Sie in der zugehörigen Dokumentation.
Wenn Sie Azure Active Directory mit Azure Storage verwenden, muss Ihrem Prinzipal eine Rolle zugewiesen werden, die Lese-, Schreib- und Löschzugriff auf Blobs wie die Storage Blob Data Contributor
Rolle ermöglicht. Weitere Informationen zur Verwendung der Active Directory-Autorisierung mit Azure Storage finden Sie in der zugehörigen Dokumentation und im Azure Storage-Autorisierungsbeispiel.
Problembehandlung
Ausführliche Informationen zur Problembehandlung finden Sie im Leitfaden zur Problembehandlung für Event Hubs.
Ausnahmebehandlung
Ereignisprozessorclientausnahmen
Der Ereignisprozessorclient versucht, angesichts von Ausnahmen resilient zu sein, und führt die erforderlichen Aktionen aus, um die Verarbeitung fortzusetzen, es sei denn, dies ist nicht möglich. Es ist keine Aktion der Entwickler erforderlich , damit dies erfolgen kann. sie ist nativ Teil des Prozessorverhaltens.
Um Entwicklern die Möglichkeit zu geben, Ausnahmen zu untersuchen und darauf zu reagieren, die innerhalb der Ereignisprozessorclientvorgänge auftreten, werden sie über das ProcessError
-Ereignis angezeigt. Die Argumente für dieses Ereignis enthalten Details zur Ausnahme und zum Kontext, in dem sie beobachtet wurde. Entwickler können normale Vorgänge auf dem Ereignisprozessorclient innerhalb dieses Ereignishandlers ausführen, z. B. das Beenden und/oder Neustarten als Reaktion auf Fehler, beeinflussen jedoch nicht anderweitig das Ausnahmeverhalten des Prozessors.
Ein einfaches Beispiel für die Implementierung des Fehlerhandlers finden Sie im Beispiel: Ereignisprozessorhandler.
Ausnahmen in Ereignishandlern
Da dem Ereignisprozessorclient der geeignete Kontext fehlt, um den Schweregrad von Ausnahmen in den Von Entwicklern bereitgestellten Ereignishandlern zu verstehen, kann er nicht davon ausgehen, welche Aktionen eine vernünftige Antwort darauf wären. Daher gelten Entwickler als verantwortlich für Ausnahmen, die in den Ereignishandlern auftreten, die sie mithilfe von try/catch
Blöcken und anderen Standardsprachkonstrukten bereitstellen.
Der Ereignisprozessorclient versucht nicht, Ausnahmen im Entwicklercode zu erkennen oder explizit anzuzeigen. Das resultierende Verhalten hängt von der Hostumgebung des Prozessors und dem Kontext ab, in dem der Ereignishandler aufgerufen wurde. Da dies in verschiedenen Szenarien variieren kann, wird entwicklern dringend empfohlen, ihre Ereignishandler defensiv zu programmieren und potenzielle Ausnahmen zu berücksichtigen.
Protokollierung und Diagnose
Die Ereignisprozessorclientbibliothek ist vollständig für die Protokollierung von Informationen auf verschiedenen Detailebenen mithilfe von .NET EventSource
zum Ausgeben von Informationen instrumentiert. Die Protokollierung wird für jeden Vorgang durchgeführt und folgt dem Muster der Markierung des Ausgangspunkts des Vorgangs, des Abschlusses und aller aufgetretenen Ausnahmen. Zusätzliche Informationen, die möglicherweise Einblicke bieten, werden auch im Kontext des zugehörigen Vorgangs protokolliert.
Die Ereignisprozessorclientprotokolle sind für alle EventListener
verfügbar, indem Sie die Quelle mit dem Namen "Azure-Messaging-EventHubs-Processor-EventProcessorClient" oder alle Quellen mit dem Merkmal "AzureEventSource" auswählen. Um das Erfassen von Protokollen aus den Azure-Clientbibliotheken zu vereinfachen, bietet die Azure.Core
von Event Hubs verwendete Bibliothek eine AzureEventSourceListener
. Weitere Informationen finden Sie unter Erfassen von Event Hubs-Protokollen mithilfe von AzureEventSourceListener.
Die Ereignisprozessorbibliothek wird auch für die verteilte Ablaufverfolgung mit Application Insights oder OpenTelemetry instrumentiert. Weitere Informationen finden Sie im Azure.Core-Diagnosebeispiel.
Nächste Schritte
Über die erläuterten Szenarien hinaus bietet die Azure Event Hubs Processor-Bibliothek Unterstützung für zusätzliche Szenarien, um den vollständigen Funktionssatz von zu EventProcessorClient
nutzen. Um einige dieser Szenarien zu erkunden, bietet die Event Hubs Processor-Clientbibliothek ein Projekt mit Beispielen, die als Illustration für gängige Szenarien dienen. Weitere Informationen finden Sie in der Infodatei zu Den Beispielen.
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Weitere Informationen finden Sie in unserem Leitfaden für Beiträge .