Compartir a través de


EventHubBufferedProducerClient.SendEventBatchFailedAsync Evento

Definición

Invocado para cualquier lote de eventos que no se pudieron publicar en el centro de eventos, este controlador debe proporcionarse antes de que se puedan poner en cola los eventos. Si este productor no se configuró con MaximumConcurrentSends y MaximumConcurrentSendsPerPartition ambos se estableció en 1, el controlador se invocará simultáneamente.

Es seguro intentar volver a enviar los eventos mediante una llamada EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken) a o EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) desde este controlador. Es importante tener en cuenta que, al hacerlo, se colocarán al final del búfer; no se mantendrá el orden original.

Este controlador se esperará después de que no se publique el lote; la operación de publicación no se considera completada hasta que se devuelva la llamada del controlador. Se recomienda que no se realicen operaciones de larga duración en el controlador para evitar que afecte negativamente al rendimiento.

No se recomienda invocar CloseAsync(Boolean, CancellationToken) o DisposeAsync() desde este controlador; si lo hace, puede dar lugar a un escenario de interbloqueo si se esperan esas llamadas.

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) 

Tipo de evento

Excepciones

Si se intenta quitar un controlador que no coincide con el controlador actual registrado.

Si se intenta agregar un controlador cuando se registra uno actualmente.

Comentarios

Si se produce un error transitorio durante la publicación, este controlador no se invocará inmediatamente; solo se invoca después de aplicar la directiva de reintentos y se han agotado todos los reintentos aptos. Si la publicación se realiza correctamente durante un intento de reintento, este controlador no se invoca.

Puesto que las aplicaciones no tienen control determinista sobre lotes con error, se recomienda que la aplicación establezca un número generoso de reintentos y pruebe el intervalo de tiempo de espera en RetryOptions. Si lo hace, se permitirá que la EventHubBufferedProducerClient mayor probabilidad de recuperarse de errores transitorios. Esto es especialmente importante al asegurarse de que se necesita el orden de los eventos.

No es necesario anular explícitamente el registro de este controlador; se anulará automáticamente el registro cuando CloseAsync(Boolean, CancellationToken) se invoque o DisposeAsync() .

Se aplica a

Consulte también