EventProcessor<TPartition>.OnProcessingEventBatchAsync Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
protected abstract System.Threading.Tasks.Task OnProcessingEventBatchAsync (System.Collections.Generic.IEnumerable<Azure.Messaging.EventHubs.EventData> events, TPartition partition, System.Threading.CancellationToken cancellationToken);
abstract member OnProcessingEventBatchAsync : seq<Azure.Messaging.EventHubs.EventData> * 'Partition * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Protected MustOverride Function OnProcessingEventBatchAsync (events As IEnumerable(Of EventData), partition As TPartition, cancellationToken As CancellationToken) As Task
Parameter
- events
- IEnumerable<EventData>
Der Batch der zu verarbeitenden Ereignisse.
- partition
- TPartition
Der Kontext der Partition, aus der die Ereignisse gelesen wurden.
- cancellationToken
- CancellationToken
Ein CancellationToken instance, um der Anforderung zu signalisieren, die Verarbeitung abzubrechen. Dies tritt höchstwahrscheinlich auf, wenn der Prozessor heruntergefahren wird.
Gibt zurück
Hinweise
Die Anzahl der Ereignisse im events
Batch kann variieren. Der Batch enthält eine Reihe von Ereignissen zwischen Null und Batchgröße, die beim Erstellen des Prozessors angefordert wurden, je nach Verfügbarkeit von Ereignissen in der Partition innerhalb des angeforderten MaximumWaitTime Intervalls.
Wenn Ereignisse in der Vorabrufwarteschlange verfügbar sind, werden sie verwendet, um den Batch so schnell wie möglich zu bilden, ohne darauf zu warten, dass zusätzliche Ereignisse aus der Event Hub-Partition gelesen werden. Wenn im Prefetch keine Ereignisse verfügbar sind, wartet der Prozessor, bis mindestens ein Ereignis verfügbar ist oder das angeforderte MaximumWaitTime ereignis abgelaufen ist.
Wenn MaximumWaitTime ist null
, liest der Ereignisprozessor weiter aus der Event Hub-Partition, bis ein Batch mit mindestens einem Ereignis gebildet werden konnte, und sendet keine leeren Batches an diese Methode.
Diese Methode wird gleichzeitig aufgerufen, beschränkt auf einen Aufruf pro Partition. Der Prozessor wartet auf jeden Aufruf, um sicherzustellen, dass die Ereignisse aus derselben Partition in der Reihenfolge verarbeitet werden, in der sie aus der Partition gelesen wurden. Für einen Aufruf dieses Handlers wird keine Zeitliche Begrenzung festgelegt. Der Prozessor wartet unbegrenzt, bis die Ausführung abgeschlossen ist, bevor ein weiteres Ereignis für die zugeordnete Partition gesendet wird. Für Implementierungen ist es sicher, vorgänge mit langer Ausführungsdauer, Wiederholungen, Verzögerungen und Aktivitäten für unzustellbare Nachrichten auszuführen.
Sollte im Code 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 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.