Partilhar via


ChangeFeedEventHost Classe

Definição

Cuidado

Switch to the ChangeFeedProcessorBuilder class and use the BuildAsync method for building the change feed processor host or the BuildEstimatorAsync method for building the remaining work estimator.

Host simples para distribuir eventos de feed de alterações entre observadores e, portanto, permitir que esses observadores sejam escalados. Ele distribui a carga entre suas instâncias e permite o dimensionamento dinâmico:

  • As partições em coleções particionadas são distribuídas entre instâncias/observadores.
  • A nova instância usa concessões de instâncias existentes para tornar a distribuição igual.
  • Se uma instância morrer, as concessões serão distribuídas entre as instâncias restantes. É útil para o cenário quando a contagem de partições é alta para que um host/VM não seja capaz de processar tantos eventos de feed de alterações. O aplicativo cliente precisa implementar IChangeFeedObserver e registrar a implementação do processador com ChangeFeedEventHost.
[System.Obsolete("Switch to the ChangeFeedProcessorBuilder class and use the BuildAsync method for building the change feed processor host or the BuildEstimatorAsync method for building the remaining work estimator.")]
public class ChangeFeedEventHost
[<System.Obsolete("Switch to the ChangeFeedProcessorBuilder class and use the BuildAsync method for building the change feed processor host or the BuildEstimatorAsync method for building the remaining work estimator.")>]
type ChangeFeedEventHost = class
Public Class ChangeFeedEventHost
Herança
ChangeFeedEventHost
Atributos

Exemplos

class DocumentFeedObserver : IChangeFeedObserver
{
    private static int s_totalDocs = 0;
    public Task OpenAsync(ChangeFeedObserverContext context)
    {
        Console.WriteLine("Worker opened, {0}", context.PartitionKeyRangeId);
        return Task.CompletedTask;  // Requires targeting .NET 4.6+.
    }
    public Task CloseAsync(ChangeFeedObserverContext context, ChangeFeedObserverCloseReason reason)
    {
        Console.WriteLine("Worker closed, {0}", context.PartitionKeyRangeId);
        return Task.CompletedTask;
    }
    public Task ProcessChangesAsync(ChangeFeedObserverContext context, IReadOnlyList<Document> docs)
    {
        Console.WriteLine("Change feed: total {0} doc(s)", Interlocked.Add(ref s_totalDocs, docs.Count));
        return Task.CompletedTask;
    }
}
static async Task StartChangeFeedHost()
{
    string hostName = Guid.NewGuid().ToString();
    DocumentCollectionInfo documentCollectionLocation = new DocumentCollectionInfo
    {
        Uri = new Uri("https://YOUR_SERVICE.documents.azure.com:443/"),
        MasterKey = "YOUR_SECRET_KEY==",
        DatabaseName = "db1",
        CollectionName = "documents"
    };
    DocumentCollectionInfo leaseCollectionLocation = new DocumentCollectionInfo
    {
        Uri = new Uri("https://YOUR_SERVICE.documents.azure.com:443/"),
        MasterKey = "YOUR_SECRET_KEY==",
        DatabaseName = "db1",
        CollectionName = "leases"
    };
    Console.WriteLine("Main program: Creating ChangeFeedEventHost...");
    ChangeFeedEventHost host = new ChangeFeedEventHost(hostName, documentCollectionLocation, leaseCollectionLocation);
    await host.RegisterObserverAsync<DocumentFeedObserver>();
    Console.WriteLine("Main program: press Enter to stop...");
    Console.ReadLine();
    await host.UnregisterObserversAsync();
}

Comentários

Ele usa a coleção de documentos auxiliares para gerenciar concessões para uma partição. Cada instância eventProcessorHost está executando as duas seguintes tarefas: 1) Renovar Concessões: mantém o controle das concessões atualmente pertencentes ao host e continua renovando as concessões. 2) Adquirir Concessões: cada instância sonda continuamente todas as concessões para marcar se houver concessões que ela deve adquirir para que o sistema entre em estado equilibrado.

Construtores

ChangeFeedEventHost(String, DocumentCollectionInfo, DocumentCollectionInfo)
Obsoleto.

Inicializa uma nova instância da classe ChangeFeedEventHost.

ChangeFeedEventHost(String, DocumentCollectionInfo, DocumentCollectionInfo, ChangeFeedHostOptions)
Obsoleto.

Inicializa uma nova instância da classe ChangeFeedEventHost.

ChangeFeedEventHost(String, DocumentCollectionInfo, DocumentCollectionInfo, ChangeFeedOptions, ChangeFeedHostOptions)
Obsoleto.

Inicializa uma nova instância da classe ChangeFeedEventHost.

Propriedades

HostName
Obsoleto.

Obtém o nome do host, que é um nome exclusivo para a instância.

Métodos

GetEstimatedRemainingWork()
Obsoleto.

Verifica de forma assíncrona as concessões existentes atuais e calcula uma estimativa do trabalho restante por partições alugadas.

RegisterObserverAsync<T>()
Obsoleto.

Registra de forma assíncrona a implementação da interface do observador com o host. Esse método também inicia o host e permite que ele comece a participar do processo de distribuição de partição.

RegisterObserverFactoryAsync(IChangeFeedObserverFactory)
Obsoleto.

Registra de forma assíncrona a implementação da fábrica de observadores com o host. Esse método também inicia o host e permite que ele comece a participar do processo de distribuição de partição.

UnregisterObserversAsync()
Obsoleto.

Desliga de forma assíncrona a instância do host. Esse método mantém as concessões em todas as partições atualmente mantidas e permite que cada instância de host seja desligada de forma limpa invocando o método com objeto .

Aplica-se a