EventProcessor<TPartition>.OnProcessingErrorAsync Método

Definição

Executa as tarefas necessárias quando ocorre uma exceção inesperada dentro da operação da infraestrutura do processador de eventos.

protected abstract System.Threading.Tasks.Task OnProcessingErrorAsync (Exception exception, TPartition partition, string operationDescription, System.Threading.CancellationToken cancellationToken);
abstract member OnProcessingErrorAsync : Exception * 'Partition * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Protected MustOverride Function OnProcessingErrorAsync (exception As Exception, partition As TPartition, operationDescription As String, cancellationToken As CancellationToken) As Task

Parâmetros

exception
Exception

A exceção que ocorreu durante a operação do processador de eventos.

partition
TPartition

O contexto da partição associada ao erro, se houver; caso contrário, null. Isso só pode ser inicializado para membros de EventProcessorPartition, dependendo do ponto em que o erro ocorreu.

operationDescription
String

Uma breve descrição textual da operação durante a qual a exceção ocorreu; destinado a ser somente informativo.

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

Esse manipulador de erros é invocado quando há uma exceção observada dentro do próprio processador de eventos; ele não é invocado para exceções no código que foi implementado para processar eventos ou outras substituições e pontos de extensão que não são críticos para a operação do processador. O processador de eventos fará todos os esforços para se recuperar de exceções e continuar o processamento. Caso uma exceção que não possa ser recuperada seja encontrada, o processador tentará perder a propriedade de todas as partições que estava processando para que o trabalho possa ser redistribuído.

As exceções apresentadas a esse método podem ser fatais ou não fatais; porque o processador pode não conseguir prever com precisão se uma exceção foi fatal ou se seu estado foi corrompido, esse método tem a responsabilidade de determinar se o processamento deve ser encerrado ou reiniciado. Se desejado, isso pode ser feito com segurança chamando StopProcessingAsync(CancellationToken) e/ou StartProcessingAsync(CancellationToken).

É recomendável que, para cenários de produção, a decisão seja tomada considerando observações feitas por esse manipulador de erros, o método invocado ao inicializar o processamento de uma partição e o método invocado quando o processamento de uma partição é interrompido. Muitos desenvolvedores também incluirão dados de suas plataformas de monitoramento nessa decisão.

Assim como acontece com o processamento de eventos, se ocorrer uma exceção no código do manipulador de erros, o processador de eventos permitirá que ele seja bolha e não tentará lidar com isso de forma alguma. Os desenvolvedores são altamente incentivados a levar em conta cenários de exceção e se proteger contra eles usando blocos try/catch e outros meios conforme apropriado.

Esse método será invocado simultaneamente e não será aguardado pelo processador, pois cada erro é independente. Nenhum limite de tempo é imposto a uma invocação; É seguro que as implementações executem operações de longa execução e novas tentativas conforme necessário.

Aplica-se a