EventProcessor<TPartition>.OnProcessingEventBatchAsync Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.