EventProcessorClient Klasse

Definition

Ermöglicht das Verwenden und Verarbeiten von Ereignissen für alle Partitionen eines bestimmten Event Hubs im Bereich einer bestimmten Consumergruppe.  Der Prozessor ist in der Lage, mit anderen Instanzen zusammenzuarbeiten, um die gleiche Event Hub- und Consumergruppe zu koppeln, um Arbeit mithilfe einer gemeinsamen Speicherplattform für die Kommunikation zu teilen.  Die Fehlertoleranz ist ebenfalls integriert, sodass der Prozessor bei Fehlern resilient ist.

public class EventProcessorClient : Azure.Messaging.EventHubs.Primitives.EventProcessor<Azure.Messaging.EventHubs.Primitives.EventProcessorPartition>
type EventProcessorClient = class
    inherit EventProcessor<EventProcessorPartition>
Public Class EventProcessorClient
Inherits EventProcessor(Of EventProcessorPartition)
Vererbung

Hinweise

Um die Koordination für die Freigabe von Partitionen zwischen EventProcessorClient Instanzen zu ermöglichen, wird exklusiver Lesezugriff auf Partitionen für die Consumergruppe bestätigt. Außer Prozessoren, die zusammenarbeiten möchten, sollten keine anderen Leser in der Consumergruppe aktiv sein. Nicht ausschließlichen Lesern wird der Zugriff verweigert; Exklusive Leser, einschließlich Prozessoren, die einen anderen Speicherort verwenden, beeinträchtigen den Betrieb und die Leistung des Prozessors.

Die EventProcessorClient kann für die Lebensdauer einer Anwendung sicher zwischengespeichert und verwendet werden. Dies ist eine bewährte Methode, wenn die Anwendung Regelmäßig oder halb regelmäßig Ereignisse verarbeitet. Der Prozessor ist für die effiziente Netzwerk-, CPU- und Arbeitsspeichernutzung verantwortlich. Wenn Sie entweder StopProcessingAsync(CancellationToken) oder StopProcessing(CancellationToken) aufrufen, wenn die Verarbeitung abgeschlossen oder die Anwendung heruntergefahren wird, wird sichergestellt, dass Netzwerkressourcen und andere nicht verwaltete Objekte ordnungsgemäß bereinigt werden.

Konstruktoren

EventProcessorClient()

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String, EventProcessorClientOptions)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String, String)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String, String, AzureNamedKeyCredential, EventProcessorClientOptions)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String, String, AzureSasCredential, EventProcessorClientOptions)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String, String, EventProcessorClientOptions)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

EventProcessorClient(BlobContainerClient, String, String, String, TokenCredential, EventProcessorClientOptions)

Initialisiert eine neue Instanz der EventProcessorClient-Klasse.

Eigenschaften

ConsumerGroup

Der Name der Consumergruppe, der dieser Ereignisprozessor zugeordnet ist. Ereignisse werden im Kontext dieser Gruppe nur gelesen.

EventHubName

Der Name des Event Hubs, mit dem der Prozessor verbunden ist, spezifisch für den Event Hubs-Namespace, der ihn enthält.

FullyQualifiedNamespace

Der vollqualifizierte Event Hubs-Namespace, dem der Prozessor zugeordnet ist. Dies ist wahrscheinlich ähnlich wie .{yournamespace}.servicebus.windows.net

Identifier

Ein eindeutiger Name, der zum Identifizieren dieses Ereignisprozessors verwendet wird.

IsRunning

Gibt an, ob dieser Ereignisprozessor derzeit ausgeführt wird.

RetryPolicy

Die aktive Richtlinie, die Wiederholungsversuche für den Prozessor steuert.

(Geerbt von EventProcessor<TPartition>)

Methoden

ClaimOwnershipAsync(IEnumerable<EventProcessorPartitionOwnership>, CancellationToken)

Versucht, den Besitz der angegebenen Partitionen für die Verarbeitung anzufordern. Diese Methode wird vom Lastenausgleich verwendet, damit Ereignisprozessorinstanzen die Verantwortung für die Verarbeitung von Partitionen für eine bestimmte Event Hub- und Consumergruppenpaarung auf die aktiven Ereignisprozessoren verteilen können.

CreateConnection()

Erstellt einen EventHubConnection für die Kommunikation mit dem Event Hubs-Dienst.

GetCheckpointAsync(String, CancellationToken)

Gibt einen Prüfpunkt für den Event Hub, die Consumergruppe und die Partitions-ID zurück, die dem Ereignisprozessor instance zugeordnet ist, sodass die Verarbeitung für eine bestimmte Partition ordnungsgemäß initialisiert werden kann.

ListOwnershipAsync(CancellationToken)

Erstellt eine Liste der Besitzzuweisungen für Partitionen zwischen den einzelnen kooperierenden Ereignisprozessorinstanzen für eine bestimmte Event Hub- und Consumergruppenpaarung. Diese Methode wird beim Lastenausgleich verwendet, um es dem Prozessor zu ermöglichen, andere aktive Mitarbeiter zu ermitteln und Entscheidungen darüber zu treffen, wie die Arbeit am besten zwischen ihnen ausgeglichen werden kann.

ListPartitionIdsAsync(EventHubConnection, CancellationToken)

Abfragen für die Bezeichner der Event Hub-Partitionen.

(Geerbt von EventProcessor<TPartition>)
OnInitializingPartitionAsync(EventProcessorPartition, CancellationToken)

Führt die Aufgaben zum Initialisieren einer Partition und des zugehörigen Kontexts für die Ereignisverarbeitung aus.

OnInitializingPartitionAsync(TPartition, CancellationToken)

Führt die Aufgaben zum Initialisieren einer Partition und des zugehörigen Kontexts für die Ereignisverarbeitung aus.

(Geerbt von EventProcessor<TPartition>)
OnPartitionProcessingStoppedAsync(EventProcessorPartition, ProcessingStoppedReason, CancellationToken)

Führt die erforderlichen Aufgaben aus, wenn die Verarbeitung für eine Partition beendet wird. Dies tritt häufig auf, wenn die Partition von einem anderen Ereignisprozessor instance beansprucht wird oder wenn der aktuelle Ereignisprozessor instance heruntergefahren wird.

OnPartitionProcessingStoppedAsync(TPartition, ProcessingStoppedReason, CancellationToken)

Führt die erforderlichen Aufgaben aus, wenn die Verarbeitung für eine Partition beendet wird. Dies tritt häufig auf, wenn die Partition von einem anderen Ereignisprozessor instance beansprucht wird oder wenn der aktuelle Ereignisprozessor instance heruntergefahren wird.

(Geerbt von EventProcessor<TPartition>)
OnProcessingErrorAsync(Exception, EventProcessorPartition, String, CancellationToken)

Führt die erforderlichen Aufgaben aus, wenn eine unerwartete Ausnahme innerhalb des Betriebs der Ereignisprozessorinfrastruktur auftritt.

OnProcessingErrorAsync(Exception, TPartition, String, CancellationToken)

Führt die erforderlichen Aufgaben aus, wenn eine unerwartete Ausnahme innerhalb des Betriebs der Ereignisprozessorinfrastruktur auftritt.

(Geerbt von EventProcessor<TPartition>)
OnProcessingEventBatchAsync(IEnumerable<EventData>, EventProcessorPartition, CancellationToken)

Führt die Aufgaben aus, die zum Verarbeiten eines Batches von Ereignissen für eine bestimmte Partition erforderlich sind, wenn sie aus dem Event Hubs-Dienst gelesen werden.

OnProcessingEventBatchAsync(IEnumerable<EventData>, TPartition, CancellationToken)

Führt die Aufgaben aus, die zum Verarbeiten eines Batches von Ereignissen für eine bestimmte Partition erforderlich sind, wenn sie aus dem Event Hubs-Dienst gelesen werden.

(Geerbt von EventProcessor<TPartition>)
ReadLastEnqueuedEventProperties(String)

Eine Reihe von Informationen zum letzten in die Warteschlange stehenden Ereignis einer Partition, wie vom zugeordneten EventHubs-Client beobachtet wird, der diesem Kontext zugeordnet ist, wenn Ereignisse vom Event Hubs-Dienst empfangen werden. Dies ist nur verfügbar, wenn der Consumer mit TrackLastEnqueuedEventProperties set erstellt wurde.

(Geerbt von EventProcessor<TPartition>)
StartProcessing(CancellationToken)

Signalisiert, dass mit der EventProcessorClient Verarbeitung von Ereignissen begonnen wird. Wenn diese Methode aufgerufen wird, während der Prozessor ausgeführt wird, wird keine Aktion ausgeführt.

StartProcessingAsync(CancellationToken)

Signalisiert, dass mit der EventProcessorClient Verarbeitung von Ereignissen begonnen wird. Wenn diese Methode aufgerufen wird, während der Prozessor ausgeführt wird, wird keine Aktion ausgeführt.

StopProcessing(CancellationToken)

Signalisiert, dass die EventProcessorClient Verarbeitung von Ereignissen beendet wird. Wenn diese Methode aufgerufen wird, während der Prozessor nicht ausgeführt wird, wird keine Aktion ausgeführt.

StopProcessingAsync(CancellationToken)

Signalisiert, dass die EventProcessorClient Verarbeitung von Ereignissen beendet wird. Wenn diese Methode aufgerufen wird, während der Prozessor nicht ausgeführt wird, wird keine Aktion ausgeführt.

UpdateCheckpointAsync(String, Int64, Nullable<Int64>, CancellationToken)

Erstellt oder aktualisiert einen Prüfpunkt für eine bestimmte Partition und identifiziert dabei eine Position im Ereignisdatenstrom der Partition, von der ein Ereignisprozessor mit dem Lesen beginnen soll.

ValidateProcessingPreconditions(CancellationToken)

Führt die Aufgaben aus, die zum Überprüfen der grundlegenden Konfiguration und der Berechtigungen der Abhängigkeiten erforderlich sind, die für die Funktion des Prozessors erforderlich sind.

Ereignisse

PartitionClosingAsync

Führt die erforderlichen Aufgaben aus, wenn die Verarbeitung für eine Partition beendet wird. Dies tritt häufig auf, wenn die Partition von einem anderen Ereignisprozessor instance beansprucht wird oder wenn der aktuelle Ereignisprozessor instance heruntergefahren wird.

Es wird nicht empfohlen, den Zustand des Prozessors direkt innerhalb dieser Methode zu verwalten. Die Anforderung, den Prozessor zu starten oder zu beenden, kann zu einem Deadlockszenario führen, insbesondere wenn die synchrone Form des Aufrufs verwendet wird.

PartitionInitializingAsync

Führt die Aufgaben zum Initialisieren einer Partition und des zugehörigen Kontexts für die Ereignisverarbeitung aus.

Es wird nicht empfohlen, den Zustand des Prozessors direkt innerhalb dieser Methode zu verwalten. Die Anforderung, den Prozessor zu starten oder zu beenden, kann zu einem Deadlockszenario führen, insbesondere wenn die synchrone Form des Aufrufs verwendet wird.

ProcessErrorAsync

Führt die erforderlichen Aufgaben aus, wenn eine unerwartete Ausnahme innerhalb des Betriebs der Ereignisprozessorinfrastruktur auftritt. Die Implementierung ist obligatorisch.

Dieser Fehlerhandler wird aufgerufen, wenn eine Ausnahme innerhalb des EventProcessorClient sich selbst beobachtet wird. Er wird nicht für Ausnahmen im Code aufgerufen, der zum Verarbeiten von Ereignissen oder anderen Ereignishandlern und Erweiterungspunkten implementiert wurde, die Entwicklercode ausführen. Die EventProcessorClient versucht, die Wiederherstellung nach Ausnahmen durchzuführen und die Verarbeitung fortzusetzen. Sollte eine Ausnahme gefunden werden, die nicht wiederhergestellt werden kann, versucht der Prozessor, den Besitz aller Partitionen, die er verarbeitet hat, zu verfällt, damit die Arbeit neu verteilt werden kann.

Die Ausnahmen für diese Methode können tödlich oder nicht tödlich sein. Da der Prozessor möglicherweise nicht genau vorhersagen kann, ob eine Ausnahme schwerwiegend war oder ob ihr Zustand beschädigt wurde, ist diese Methode für die Entscheidung verantwortlich, ob die Verarbeitung beendet oder neu gestartet werden soll. Wenn gewünscht, kann dies sicher durch Aufrufen StopProcessingAsync(CancellationToken) von und/oder StartProcessingAsync(CancellationToken)erfolgen.

Es wird für Produktionsszenarien empfohlen, die Entscheidung zu treffen, indem Die Beobachtungen dieses Fehlerhandlers, die methode, die beim Initialisieren der Verarbeitung für eine Partition aufgerufen wird, und die Methode, die aufgerufen wird, wenn die Verarbeitung für eine Partition beendet wird, berücksichtigt wird. Viele Entwickler werden auch Daten von ihren Überwachungsplattformen in diese Entscheidung einbeziehen.

Wie bei der Ereignisverarbeitung lässt der Ereignisprozessor im Code für den Fehlerhandler eine Ausnahme zu und versucht nicht, sie in irgendeiner Weise zu behandeln. Entwicklern wird dringend empfohlen, Ausnahmeszenarien zu berücksichtigen und sich mit try/catch-Blöcken und anderen geeigneten Mitteln davor zu schützen.

ProcessEventAsync

Führt die Aufgaben aus, die zum Verarbeiten eines Batches von Ereignissen für eine bestimmte Partition erforderlich sind, wenn sie aus dem Event Hubs-Dienst gelesen werden. Die Implementierung ist obligatorisch.

Sollte innerhalb des Codes für diese Methode eine Ausnahme auftreten, ermöglicht der Ereignisprozessor die Weitergabe des Stapels nach oben, ohne zu versuchen, ihn in irgendeiner Weise zu behandeln. Auf den meisten Hosts wird dadurch die für die Partitionsverarbeitung verantwortliche Aufgabe fehlerhaft, sodass sie vom letzten Prüfpunkt aus neu gestartet wird. Auf einigen Hosts kann der Prozess abstürzen. Entwicklern wird dringend empfohlen, alle Ausnahmeszenarien zu berücksichtigen und sich mit try/catch-Blöcken und anderen geeigneten Mitteln davor zu schützen.

Es wird nicht empfohlen, den Zustand des Prozessors direkt in diesem Handler zu verwalten. Die Anforderung, den Prozessor zu starten oder zu beenden, kann zu einem Deadlockszenario führen, insbesondere wenn die synchrone Form des Aufrufs verwendet wird.

Gilt für: