Partilhar via


EventProcessor<TPartition>.OnProcessingEventBatchAsync Método

Definição

Executa as tarefas necessárias para processar um lote de eventos para uma determinada partição conforme eles são lidos do serviço hubs de eventos.

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>

O lote de eventos a serem processados.

partition
TPartition

O contexto da partição da qual os eventos foram lidos.

cancellationToken
CancellationToken

Uma CancellationToken instância para sinalizar a solicitação para cancelar o processamento. É mais provável que isso ocorra quando o processador está sendo desligado.

Retornos

Comentários

O número de eventos no events lote pode variar. O lote conterá uma série de eventos entre o tamanho zero e o do lote que foram solicitados quando o processador foi criado, dependendo da disponibilidade de eventos na partição dentro do intervalo solicitado MaximumWaitTime .

Quando os eventos estiverem disponíveis na fila de pré-busca, eles serão usados para formar o lote o mais rápido possível sem esperar que eventos adicionais da partição do Hub de Eventos sejam lidos. Quando nenhum evento estiver disponível na pré-busca, o processador aguardará até que pelo menos um evento esteja disponível ou o solicitado MaximumWaitTime tenha decorrido.

Se MaximumWaitTime for null, o processador de eventos continuará lendo a partir da partição do Hub de Eventos até que um lote com pelo menos um evento possa ser formado e não enviará nenhum lote vazio para esse método.

Esse método será invocado simultaneamente, limitado a uma chamada por partição. O processador aguardará cada invocação para garantir que os eventos da mesma partição sejam processados na ordem em que foram lidos da partição. Nenhum limite de tempo é imposto a uma invocação desse manipulador; o processador aguardará indefinidamente a conclusão da execução antes de expedir outro evento para a partição associada. É seguro que as implementações executem operações de execução prolongada, repetições, atrasos e atividades de mensagens mortas.

Se ocorrer uma exceção dentro do código para esse método, o processador de eventos permitirá que ele propague a pilha sem tentar manirá-la de forma alguma. Na maioria dos hosts, isso falhará na tarefa responsável pelo processamento de partição, fazendo com que ela seja reiniciada do último ponto de verificação. Em alguns hosts, ele pode travar o processo. Os desenvolvedores são fortemente incentivados a levar em conta todos os cenários de exceção e se proteger contra eles usando blocos try/catch e outros meios conforme apropriado.

Não é recomendável que o estado do processador seja gerenciado diretamente nesse método; a solicitação para iniciar ou parar o processador pode resultar em um cenário de deadlock, especialmente se estiver usando a forma síncrona da chamada.

Aplica-se a