EventProcessorClient Classe

Definição

Permite o consumo e o processamento de eventos em todas as partições de um determinado Hub de Eventos dentro do escopo de um grupo de consumidores específico.  O processador é capaz de colaborar com outras instâncias para o mesmo hub de eventos e emparelhamento de grupo de consumidores para compartilhar trabalho usando uma plataforma de armazenamento comum para se comunicar.  A tolerância a falhas também é interna, permitindo que o processador seja resiliente diante de erros.

public class EventProcessorClient : Azure.Messaging.EventHubs.Primitives.EventProcessor<Azure.Messaging.EventHubs.Primitives.EventProcessorPartition>
type EventProcessorClient = class
    inherit EventProcessor<EventProcessorPartition>
Public Class EventProcessorClient
Inherits EventProcessor(Of EventProcessorPartition)
Herança

Comentários

Para habilitar a coordenação para o compartilhamento de partições entre EventProcessorClient instâncias, elas declararão acesso de leitura exclusivo a partições para o grupo de consumidores. Nenhum outro leitor deve estar ativo no grupo de consumidores além dos processadores que pretendem colaborar. Leitores não exclusivos terão acesso negado; leitores exclusivos, incluindo processadores que usam locais de armazenamento diferentes, interferirão na operação e no desempenho do processador.

O EventProcessorClient é seguro para armazenar em cache e usar durante o tempo de vida de um aplicativo, e essa é a melhor prática quando o aplicativo processa eventos regularmente ou semi regularmente. O processador é responsável por garantir o uso eficiente de rede, CPU e memória. Chamar ou StopProcessingAsync(CancellationToken)StopProcessing(CancellationToken) quando o processamento for concluído ou como o aplicativo estiver sendo desligado garantirá que os recursos de rede e outros objetos não gerenciados sejam limpos corretamente.

Construtores

EventProcessorClient()

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String)

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String, EventProcessorClientOptions)

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String, String)

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String, String, AzureNamedKeyCredential, EventProcessorClientOptions)

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String, String, AzureSasCredential, EventProcessorClientOptions)

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String, String, EventProcessorClientOptions)

Inicializa uma nova instância da classe EventProcessorClient.

EventProcessorClient(BlobContainerClient, String, String, String, TokenCredential, EventProcessorClientOptions)

Inicializa uma nova instância da classe EventProcessorClient.

Propriedades

ConsumerGroup

O nome do grupo de consumidores ao qual esse processador de eventos está associado. Os eventos serão lidos somente no contexto desse grupo.

EventHubName

O nome do Hub de Eventos ao qual o processador está conectado, específico para o namespace dos Hubs de Eventos que o contém.

FullyQualifiedNamespace

O namespace dos Hubs de Eventos totalmente qualificado ao qual o processador está associado. É provável que isso seja semelhante a {yournamespace}.servicebus.windows.net.

Identifier

Um nome exclusivo usado para identificar esse processador de eventos.

IsRunning

Indica se esse processador de eventos está ou não em execução no momento.

RetryPolicy

A política ativa que rege as tentativas de repetição para o processador.

(Herdado de EventProcessor<TPartition>)

Métodos

ClaimOwnershipAsync(IEnumerable<EventProcessorPartitionOwnership>, CancellationToken)

Tenta reivindicar a propriedade das partições especificadas para processamento. Esse método é usado pelo balanceamento de carga para permitir que as instâncias do processador de eventos distribuam a responsabilidade pelo processamento de partições para um determinado Hub de Eventos e emparelhamento de grupo de consumidores entre os processadores de eventos ativos.

CreateConnection()

Cria um EventHubConnection a ser usado para se comunicar com o serviço hubs de eventos.

GetCheckpointAsync(String, CancellationToken)

Retorna um ponto de verificação para o Hub de Eventos, o grupo de consumidores e a ID de partição associados à instância do processador de eventos, para que o processamento de uma determinada partição possa ser inicializado corretamente.

ListOwnershipAsync(CancellationToken)

Produz uma lista das atribuições de propriedade para partições entre cada uma das instâncias de processador de eventos de cooperação para um determinado Hub de Eventos e emparelhamento de grupo de consumidores. Esse método é usado durante o balanceamento de carga para permitir que o processador descubra outros colaboradores ativos e tome decisões sobre como equilibrar melhor o trabalho entre eles.

ListPartitionIdsAsync(EventHubConnection, CancellationToken)

Consultas para os identificadores das partições do Hub de Eventos.

(Herdado de EventProcessor<TPartition>)
OnInitializingPartitionAsync(EventProcessorPartition, CancellationToken)

Executa as tarefas para inicializar uma partição e seu contexto associado para processamento de eventos.

OnInitializingPartitionAsync(TPartition, CancellationToken)

Executa as tarefas para inicializar uma partição e seu contexto associado para processamento de eventos.

(Herdado de EventProcessor<TPartition>)
OnPartitionProcessingStoppedAsync(EventProcessorPartition, ProcessingStoppedReason, CancellationToken)

Executa as tarefas necessárias ao processar uma partição que está sendo interrompida. Isso geralmente ocorre quando a partição é reivindicada por outra instância do processador de eventos ou quando a instância atual do processador de eventos está sendo fechada.

OnPartitionProcessingStoppedAsync(TPartition, ProcessingStoppedReason, CancellationToken)

Executa as tarefas necessárias ao processar uma partição que está sendo interrompida. Isso geralmente ocorre quando a partição é reivindicada por outra instância do processador de eventos ou quando a instância atual do processador de eventos está sendo fechada.

(Herdado de EventProcessor<TPartition>)
OnProcessingErrorAsync(Exception, EventProcessorPartition, String, CancellationToken)

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

OnProcessingErrorAsync(Exception, TPartition, String, CancellationToken)

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

(Herdado de EventProcessor<TPartition>)
OnProcessingEventBatchAsync(IEnumerable<EventData>, EventProcessorPartition, CancellationToken)

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.

OnProcessingEventBatchAsync(IEnumerable<EventData>, TPartition, CancellationToken)

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.

(Herdado de EventProcessor<TPartition>)
ReadLastEnqueuedEventProperties(String)

Um conjunto de informações sobre o último evento enfileirado de uma partição, conforme observado pelo cliente do EventHubs associado associado a esse contexto à medida que os eventos são recebidos do serviço hubs de eventos. Isso só estará disponível se o consumidor tiver sido criado com TrackLastEnqueuedEventProperties set.

(Herdado de EventProcessor<TPartition>)
StartProcessing(CancellationToken)

Sinaliza o para iniciar o EventProcessorClient processamento de eventos. Se esse método for chamado enquanto o processador estiver em execução, nenhuma ação será tomada.

StartProcessingAsync(CancellationToken)

Sinaliza o para iniciar o EventProcessorClient processamento de eventos. Se esse método for chamado enquanto o processador estiver em execução, nenhuma ação será tomada.

StopProcessing(CancellationToken)

Sinaliza o para interromper o EventProcessorClient processamento de eventos. Se esse método for chamado enquanto o processador não estiver em execução, nenhuma ação será executada.

StopProcessingAsync(CancellationToken)

Sinaliza o para interromper o EventProcessorClient processamento de eventos. Se esse método for chamado enquanto o processador não estiver em execução, nenhuma ação será executada.

UpdateCheckpointAsync(String, Int64, Nullable<Int64>, CancellationToken)

Cria ou atualiza um ponto de verificação para uma partição específica, identificando uma posição no fluxo de eventos da partição da qual um processador de eventos deve começar a ler.

ValidateProcessingPreconditions(CancellationToken)

Executa as tarefas necessárias para validar a configuração básica e as permissões das dependências necessárias para que o processador funcione.

Eventos

PartitionClosingAsync

Executa as tarefas necessárias ao processar uma partição que está sendo interrompida. Isso geralmente ocorre quando a partição é reivindicada por outra instância do processador de eventos ou quando a instância atual do processador de eventos está sendo fechada.

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

PartitionInitializingAsync

Executa as tarefas para inicializar uma partição e seu contexto associado para processamento de eventos.

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

ProcessErrorAsync

Executa as tarefas necessárias quando ocorre uma exceção inesperada dentro da operação da infraestrutura do processador de eventos. A implementação é obrigatória.

Esse manipulador de erros é invocado quando há uma exceção observada dentro do EventProcessorClient próprio ; ele não é invocado para exceções no código que foi implementado para processar eventos ou outros manipuladores de eventos e pontos de extensão que executam o código do desenvolvedor. O EventProcessorClient 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.

ProcessEventAsync

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. A implementação é obrigatória.

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 lidar com ela de forma alguma. Na maioria dos hosts, isso falhará na tarefa responsável pelo processamento da partição, fazendo com que ela seja reiniciada do último ponto de verificação. Em alguns hosts, isso pode falhar no processo. Os desenvolvedores são altamente 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 manipulador; solicitar 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