Compartir a través de


EventProcessor<TPartition>.OnProcessingEventBatchAsync Método

Definición

Realiza las tareas necesarias para procesar un lote de eventos para una partición determinada a medida que se leen desde el servicio Event Hubs.

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

Parámetros

events
IEnumerable<EventData>

Lote de eventos que se van a procesar.

partition
TPartition

Contexto de la partición desde la que se leyeron los eventos.

cancellationToken
CancellationToken

Instancia CancellationToken de para indicar la solicitud para cancelar el procesamiento. Esto es lo más probable que se produzca cuando el procesador se apague.

Devoluciones

Comentarios

El número de eventos del events lote puede variar. El lote contendrá una serie de eventos entre cero y el tamaño del lote que se solicitó cuando se creó el procesador, en función de la disponibilidad de eventos en la partición dentro del intervalo solicitado MaximumWaitTime .

Cuando los eventos estén disponibles en la cola de captura previa, se usarán para formar el lote lo antes posible sin esperar a que se lean eventos adicionales de la partición del centro de eventos. Cuando no haya ningún evento disponible en la captura previa, el procesador esperará hasta que haya transcurrido al menos un evento o haya transcurrido el solicitado MaximumWaitTime .

Si MaximumWaitTime es null, el procesador de eventos seguirá leyendo desde la partición del centro de eventos hasta que se pueda formar un lote con al menos un evento y no enviará ningún lote vacío a este método.

Este método se invocará simultáneamente, limitado a una llamada por partición. El procesador esperará cada invocación para asegurarse de que los eventos de la misma partición se procesan en el orden en que se leyeron desde la partición. No se impone ningún límite de tiempo en una invocación de este controlador; El procesador esperará indefinidamente a que se complete la ejecución antes de enviar otro evento para la partición asociada. Es seguro que las implementaciones realicen operaciones de larga duración, reintentos, retrasos y actividades de mensajes fallidos.

Si se produce una excepción en el código de este método, el procesador de eventos le permitirá propagar la pila sin intentar controlarla de ninguna manera. En la mayoría de los hosts, se producirá un error en la tarea responsable del procesamiento de particiones, lo que hará que se reinicie desde el último punto de control. En algunos hosts, puede bloquear el proceso. Se recomienda encarecidamente a los desarrolladores tener en cuenta todos los escenarios de excepción y protegerse contra ellos mediante bloques try/catch y otros medios según corresponda.

No se recomienda que el estado del procesador se administre directamente desde dentro de este método; solicitar iniciar o detener el procesador puede dar lugar a un escenario de interbloqueo, especialmente si se usa la forma sincrónica de la llamada.

Se aplica a