Freigeben über


EventHubBufferedProducerClient.SendEventBatchFailedAsync Ereignis

Definition

Dieser Handler, der für jeden Batch von Ereignissen aufgerufen wird, der nicht im Event Hub veröffentlicht werden konnte, muss bereitgestellt werden, bevor Ereignisse in die Warteschlange gestellt werden können. Wenn dieser Producer nicht mit MaximumConcurrentSends konfiguriert wurde und MaximumConcurrentSendsPerPartition beide auf 1 festgelegt wurden, wird der Handler gleichzeitig aufgerufen.

Es ist sicher, zu versuchen, die Ereignisse erneut zu senden, indem Sie oder EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) innerhalb dieses Handlers aufrufenEnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken). Es ist wichtig zu beachten, dass sie dadurch am Ende des Puffers platziert werden. die ursprüngliche Bestellung wird nicht beibehalten.

Dieser Handler wird erwartet, nachdem der Batch nicht veröffentlicht wurde. der Veröffentlichungsvorgang gilt erst als abgeschlossen, wenn der Handleraufruf zurückgegeben wird. Es wird empfohlen, dass im Handler keine Vorgänge mit langer Ausführung ausgeführt werden, um negative Auswirkungen auf den Durchsatz zu vermeiden.

Es wird nicht empfohlen, oder DisposeAsync() über diesen Handler aufzurufenCloseAsync(Boolean, CancellationToken). Dies kann zu einem Deadlockszenario führen, wenn diese Aufrufe erwartet werden.

public event Func<Azure.Messaging.EventHubs.Producer.SendEventBatchFailedEventArgs,System.Threading.Tasks.Task> SendEventBatchFailedAsync;
member this.SendEventBatchFailedAsync : Func<Azure.Messaging.EventHubs.Producer.SendEventBatchFailedEventArgs, System.Threading.Tasks.Task> 
Public Custom Event SendEventBatchFailedAsync As Func(Of SendEventBatchFailedEventArgs, 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 er gerade registriert ist.

Hinweise

Sollte während der Veröffentlichung ein vorübergehender Fehler auftreten, wird dieser Handler nicht sofort aufgerufen. sie wird erst aufgerufen, nachdem die Wiederholungsrichtlinie angewendet wurde und alle berechtigten Wiederholungsversuche ausgeschöpft wurden. Sollte die Veröffentlichung während eines Wiederholungsversuchs erfolgreich sein, wird dieser Handler nicht aufgerufen.

Da Anwendungen keine deterministische Kontrolle über fehlgeschlagene Batches haben, wird empfohlen, dass die Anwendung eine großzügige Anzahl von Wiederholungsversuchen und ein Timeoutintervall für den Versuch in der RetryOptionsfestgelegt hat. Dies ermöglicht eine EventHubBufferedProducerClient höhere Chance, sich nach vorübergehenden Fehlern wiederherzustellen. Dies ist besonders wichtig, wenn die Reihenfolge der Ereignisse erforderlich ist.

Es ist nicht erforderlich, die Registrierung dieses Handlers explizit aufzuheben. Die Registrierung wird automatisch aufgehoben, wenn CloseAsync(Boolean, CancellationToken) oder DisposeAsync() aufgerufen wird.

Gilt für:

Weitere Informationen