Freigeben über


EventProcessorClient.ProcessErrorAsync Ereignis

Definition

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.

Für Produktionsszenarien empfiehlt es sich, 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.

public event Func<Azure.Messaging.EventHubs.Processor.ProcessErrorEventArgs,System.Threading.Tasks.Task> ProcessErrorAsync;
member this.ProcessErrorAsync : Func<Azure.Messaging.EventHubs.Processor.ProcessErrorEventArgs, System.Threading.Tasks.Task> 
Public Custom Event ProcessErrorAsync As Func(Of ProcessErrorEventArgs, Task) 

Ereignistyp

Ausnahmen

Wenn versucht wird, einen Handler zu entfernen, der nicht mit dem aktuellen registrierten Handler übereinstimmt.

Wenn versucht wird, einen Handler hinzuzufügen, wenn derzeit ein Handler registriert ist.

Hinweise

Dieser Handler wird gleichzeitig aufgerufen und wird vom Prozessor nicht erwartet, da jeder Fehler unabhängig ist. Für einen Aufruf dieses Handlers wird keine Zeitliche Begrenzung festgelegt. Es ist für Implementierungen sicher, vorgänge mit langer Ausführungszeit und Wiederholungen bei Bedarf auszuführen.

Gilt für:

Weitere Informationen