SDK do Processador de Feed de Alterações do .NET: Download e notas de versão (Legado)

APLICA-SE A: NoSQL

Ligações
Transferência de SDK NuGet
Documentação da API Documentação de referência da API da biblioteca do Processador de Feed de Alterações
Introdução Introdução ao SDK Processador de Feed de Alterações .NET
Framework suportado atualmente Microsoft .NET Framework 4.5
Microsoft .NET Núcleo

Nota

Se estiver a utilizar o processador de feed de alterações, veja a versão 3.x mais recente do SDK .NET, que tem o feed de alterações incorporado no SDK.

Notas de versão

Compilações v2

2.5.0

  • Adicionado novo construtor para a Microsoft.Azure.Documents.ChangeFeedProcessor.Logging.TraceLogProvider classe que usa uma instância do System.Diagnostics.TraceSource como um argumento. Isso permite que o TraceLogProvider, que é usado para rastreamento .net, seja criado programaticamente a partir de uma instância personalizada TraceSource inicializada no código-fonte. Antes dessa alteração, só era possível configurar o rastreamento .net usando o arquivo App.config.

2.4.0

  • Adicionado suporte para coleções de leasing que podem ser particionadas com chave de partição definida como /partitionKey. Antes dessa alteração, a chave de partição da coleção de locação teria que ser definida como /id.
  • Esta versão permite o uso de coleções de leasing com API para Gremlin, já que as coleções Gremlin não podem ter a chave de partição definida como /id.

2.3.2

  • Adicionada compatibilidade de armazenamento de concessão com o SDK [V3 que permite caminhos de migração em direto. Uma aplicação pode ser migrada para o SDK V3 e migrada de novo para a biblioteca do Processador de Feed de Alterações sem perder qualquer estado.

2.3.1

  • Corrigido um caso em que o motivo de fecho FeedProcessing.ChangeFeedObserverCloseReason.Unknown era enviado para FeedProcessing.IChangeFeedObserver.CloseAsync se a partição não fosse encontrada ou se a réplica de destino não estivesse atualizada com a sessão de leitura. Nestes casos, são agora utilizados os motivos de fecho FeedProcessing.ChangeFeedObserverCloseReason.ResourceGone e FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable.
  • Adicionado um novo motivo de fecho, FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable, que é enviado para fechar o observador do feed de alterações quando a réplica de destino não está atualizada com a sessão de leitura.

2.3.0

  • Adicionado um novo método ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory e a interface pública correspondente ICheckpointPartitionProcessorFactory. Permite uma implementação da interface IPartitionProcessor para utilizar o mecanismo de pontos de verificação incorporado. A nova fábrica é semelhante à existente, IPartitionProcessorFactory, exceto que o respetivo método Create também assume o parâmetro ILeaseCheckpointer.
  • Só pode ser utilizado um dos dois métodos, ChangeFeedProcessorBuilder.WithPartitionProcessorFactory ou ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory, para a mesma instância ChangeFeedProcessorBuilder.

2.2.8

  • Melhorias de estabilidade e diagnóstico:
    • Adicionado suporte para detetar leituras do feed de alterações que demoram muito tempo. Quando demora mais do que o valor especificado pela ChangeFeedProcessorOptions.ChangeFeedTimeout propriedade, as seguintes etapas são executadas:
      • A operação para ler o feed de alterações na partição problemática é abortada.
      • A instância do processador do feed de alterações elimina a propriedade da concessão problemática. A concessão eliminada será retomada durante o próximo passo de aquisição da concessão, o qual será feito pela mesma ou por outra instância do processador de feed de alterações. Desta forma, a leitura do feed de alterações é recomeçada.
      • É reportado um problema ao monitor de estado de funcionamento. O monitor de estado de funcionamento predefinido envia todos os problemas reportados para o registo de rastreio.
    • Adicionada uma propriedade pública nova, ChangeFeedProcessorOptions.ChangeFeedTimeout. O valor predefinido desta propriedade é 10 minutos.
    • Adicionado um valor de enumeração pública novo, Monitoring.MonitoredOperation.ReadChangeFeed. Quando o valor de HealthMonitoringRecord.Operation está definido como Monitoring.MonitoredOperation.ReadChangeFeed, indica que o problema de estado de funcionamento está relacionado com a leitura do feed de alterações.

2.2.7

  • Estratégia de balanceamento de carga aprimorada para o cenário em que a obtenção de todas as concessões leva mais tempo do que o intervalo de expiração da concessão, por exemplo, devido a problemas de rede:
    • Neste cenário, é utilizado o algoritmo de balanceamento de carga para considerar, falsamente, as concessões como expiradas, fazendo com que os proprietários ativos percam as concessões. Esta situação pode originar a repetição desnecessária do balanceamento de muitas concessões.
    • Este problema foi corrigido nesta versão ao evitar a repetição em caso de conflito ao adquirir a concessão expirada, cujo proprietário não mudou, e ao adiar a aquisição da concessão expirada para a próxima iteração do balanceamento de carga.

2.2.6

  • Processamento das exceções do observador melhorado.
  • Informações mais detalhadas sobre erros do Observador:
    • Quando um observador é fechado devido a uma exceção emitida pelo respetivo ProcessChangesAsync, CloseAsync receberá agora o parâmetro de motivo definido como ChangeFeedObserverCloseReason.ObserverError.
    • Adicionados rastreios para identificar erros no código do utilizador num observador.

2.2.5

  • Adicionado suporte para lidar com a divisão em coleções que utilizam o débito de bases de dados partilhado.
    • Esta versão corrige um problema que pode ocorrer durante a divisão em coleções que utilizem o débito de bases de dados partilhado quando a divisão resulta num novo balanceamento da partição com apenas um intervalo de chaves de partições subordinadas criadas, em vez de dois. Quando isto acontece, o Processador de Feed de Alterações pode ficar bloqueado ao eliminar a concessão do intervalo de chaves de partições antigo e não criar concessões novas. O problema está corrigido nesta versão.

2.2.4

  • Foi adicionada a propriedade nova ChangeFeedProcessorOptions.StartContinuation para suportar o início do feed de alterações a partir do token de continuação de pedido. Só é utilizado quando a coleção de concessões está vazia ou quando uma concessão não tem ContinuationToken definido. Relativamente às concessões na coleção de concessões que têm ContinuationToken definido, este é utilizado e ChangeFeedProcessorOptions.StartContinuation ignorado.

2.2.3

  • Adicionado suporte para a utilização de arquivo personalizado para persistir os tokens de continuação por partição.
    • Por exemplo, um arquivo de concessões personalizado pode ser particionado em coleções do Azure Cosmos DB de qualquer forma personalizada.
    • Os arquivos de concessões personalizados podem utilizar o novo ponto de extensibilidade ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) e a interface pública ILeaseStoreManager.
    • A interface ILeaseManager foi refatorizada em várias interfaces de funções.
  • Alteração interruptiva menor: foi removido o ponto de extensibilidade ChangeFeedProcessorBuilder.WithLeaseManager(ILeaseManager); em alternativa, utilize ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager).

2.2.2

  • Esta versão corrige um problema que ocorre durante o processamento de uma divisão na coleção monitorizada quando é utilizada uma coleção de concessões particionada. Ao processar uma concessão para partição de divisão, a concessão correspondente a essa partição pode não ser eliminada. O problema está corrigido nesta versão.

2.2.1

  • Foi corrigido o estimador de cálculo para contas com múltiplas regiões de escrita e um novo formato de Token de Sessão.

2.2.0

  • Adicionado suporte para coleções de concessões particionadas. A chave de partição tem de ser definida como /id.
  • Alteração interruptiva menor: os métodos da interface IChangeFeedDocumentClient e da classe ChangeFeedDocumentClient foram alterados para passar a incluir os parâmetros RequestOptions e CancellationToken. IChangeFeedDocumentClient é um ponto de extensibilidade avançado que permite fornecer implementação personalizada do Document Client para usar com o Change Feed Processor, por exemplo, decorar o DocumentClient e intercetar todas as chamadas para ele para fazer rastreamento extra, tratamento de erros, etc. Com essa atualização, o código que implementa IChangeFeedDocumentClient precisará ser alterado para incluir novos parâmetros na implementação.
  • Melhoras menores ao diagnóstico.

2.1.0

  • Adicionado uma API nova, Task<IReadOnlyList<RemainingPartitionWork>> IRemainingWorkEstimator.GetEstimatedRemainingWorkPerPartitionAsync(). Pode ser utilizada para obter o trabalho estimado para cada partição.
  • Suporta o SDK Microsoft.Azure.DocumentDB 2.0 Requer o Microsoft.Azure.DocumentDB 2.0 ou posterior.

2.0.6

  • Adicionada a propriedade pública ChangeFeedEventHost.HostName para compatibilidade com v1.

2.0.5

  • Corrigida uma condição race que ocorre durante a divisão da partição. A condição race pode levar à aquisição da concessão e à perda imediata da mesma durante a divisão da partição, provocando contenção. O problema da condição race está corrigido nesta versão.

2.0.4

  • SDK em Disponibilidade Geral

2.0.3-prerelease

  • Foram corrigidos os problemas seguintes:

    • Quando ocorre a divisão da partição, pode haver um processamento duplicado dos documentos modificados antes da divisão.
    • A API GetEstimatedRemainingWork devolveu 0 quando não estavam presentes quaisquer concessões na coleção de concessões.
  • As exceções seguintes são tornadas públicas. Extensões que implementam IPartitionProcessor podem emitir estas exceções.

    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.LeaseLostException.
    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionException.
    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionNotFoundException.
    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionSplitException.

2.0.2-prerelease

  • Pequenas alterações na API:
    • ChangeFeedProcessorOptions.IsAutoCheckpointEnabled foi removido, porque foi marcado como obsoleto.

2.0.1-prerelease

  • Melhorias de estabilidade:
    • Melhor processamento da inicialização do arquivo de concessões. Quando o arquivo de concessões está vazio, só uma instância do processador o pode inicializar; os outros aguardam.
    • Renovação/lançamento de concessões mais estável/eficiente. A renovação e o lançamento de uma partição de concessão são independentes da renovação de outras. Na v1, isto era feito sequencialmente para todas as partições.
  • Nova API v2:
    • Padrão de construtor para construção flexível do processador: a classe ChangeFeedProcessorBuilder.
      • Pode assumir qualquer combinação de parâmetros.
      • Pode assumir a instância DocumentClient para monitorização e/ou recolha de concessão (não disponível na v1).
    • IChangeFeedObserver.ProcessChangesAsync tem agora CancellationToken.
    • IRemainingWorkEstimator - o estimador de trabalho restante pode ser utilizado em separado do processador.
    • Novos pontos de extensibilidade:
      • IPartitionLoadBalancingStrategy - para balanceamento de carga personalizado de partições entre instâncias do processador.
      • ILease, ILeaseManager - para gestão de concessões personalizada.
      • IPartitionProcessor - para alterações ao processamento personalizado numa partição.
  • Registo - utiliza a biblioteca LibLog.
  • 100% retrocompatível com a API v1.
  • Nova base de código.
  • Compatível com as versões 1.21.1 e posteriores do SDK .NET do SQL.

Compilações v1

1.3.3

  • Adicionados mais registos.
  • Corrigida uma fuga em DocumentClient ao chamar a estimativa de trabalho pendente várias vezes.

1.3.2

  • Correções à estimativa de trabalho pendente.

1.3.1

  • Melhorias à estabilidade.
    • Correção ao processamento de tarefas canceladas que pode fazer com que os observadores parem em algumas partições.
  • Suporte para pontos de verificação manuais.
  • Compatível com as versões 1.21 e posteriores do SDK de .NET do SQL.

1.2.0

  • Adiciona suporte para .NET Standard 2.0 O pacote suporta agora os monikers de framework netstandard2.0 e net451.
  • Compatível com as versões 1.17.0 e posteriores do SDK de .NET do SQL.
  • Compatível com as versões 1.5.1 e posteriores do SDK de .NET Core do SQL.

1.1.1

  • Corrige um problema com o cálculo da estimativa do trabalho restante quando o Feed de Alterações estava vazio ou não havia trabalho pendente.
  • Compatível com as versões 1.13.2 e posteriores do SDK de .NET do SQL.

1.1.0

  • Adicionado um método para obter uma estimativa do trabalho restante a ser processado no Feed de Alterações.
  • Compatível com as versões 1.13.2 e posteriores do SDK de .NET do SQL.

1.0.0

  • SDK em Disponibilidade Geral
  • Compatível com as versões 1.14.1 e anteriores do SDK de .NET do SQL.

Datas de lançamento e descontinuação

A Microsoft enviará uma notificação com uma antecedência de pelo menos 12 meses antes da descontinuação de um SDK, para tornar a transição para uma versão mais recente/suportada mais suave. As funcionalidades, características e otimizações novas só são adicionadas ao SDK atual, pelo que se recomenda que atualize sempre para a última versão dos SDKs o mais cedo possível.

Aviso

Após 31 de agosto de 2022, o Azure Cosmos DB não fará mais correções de bugs, adicionará novos recursos e fornecerá suporte às versões 1.x do SDK do Azure Cosmos DB .NET ou .NET Core para API para NoSQL. Se preferir não atualizar, o serviço Azure Cosmos DB continua a servir os pedidos enviados das versões 1.x do SDK.


Versão Data de Lançamento Data de Extinção
2.5.0 15 de maio de 2023 ---
2.4.0 6 de maio de 2021 ---
2.3.2 11 de agosto de 2020 ---
2.3.1 30 de julho de 2020 ---
2.3.0 2 de abril de 2020 ---
2.2.8 28 de outubro de 2019 ---
2.2.7 14 de maio de 2019 ---
2.2.6 29 de janeiro de 2019 ---
2.2.5 13 de dezembro de 2018 ---
2.2.4 29 de novembro de 2018 ---
2.2.3 19 de novembro de 2018 ---
2.2.2 Outubro 31, 2018 ---
2.2.1 24 de outubro de 2018 ---
1.3.3 08 de maio de 2018 ---
1.3.2 18 de abril de 2018 ---
1.3.1 13 de março de 2018 ---
1.2.0 31 de outubro de 2017 ---
1.1.1 29 de agosto de 2017 ---
1.1.0 13 de agosto de 2017 ---
1.0.0 07 de julho de 2017 ---

FAQ

Como vou ser notificado do SDK descontinuado?

A Microsoft dará um aviso com 12 meses de antecedência antes do fim de suporte do SDK descontinuado para permitir uma transição suave para um SDK suportado. Será notificado através de vários canais de comunicação: o portal do Azure, as atualizações do Azure e através de comunicação direta com os administradores atribuídos aos serviços.

Posso criar aplicações com um SDK do Azure Cosmos DB que vai ser descontinuado durante o período de 12 meses?

Sim, poderá criar, implementar e modificar aplicações com o SDK do Azure Cosmos DB que vai ser descontinuado durante o período de aviso de 12 meses. Recomendamos que migre para uma versão suportada mais recente do SDK do Azure Cosmos DB durante o período de aviso de 12 meses, conforme adequado.

Após a data da descontinuação, o que acontece às aplicações que utilizam o SDK do Azure Cosmos DB não suportado?

Após a data de descontinuação, o Azure Cosmos DB deixará de fazer correções de erros, adicionar funcionalidades novas e fornecer suporte às versões descontinuadas do SDK. Se preferir não atualizar, o serviço Azure Cosmos DB continua a servir os pedidos enviados das versões descontinuadas do SDK.

Que versões do SDK terão as mais recentes funcionalidades e atualizações?

As funcionalidades e atualizações novas só vão ser adicionadas à última versão menor da última grande versão do SDK. Recomendamos que utilize sempre a última versão para tirar partido das funcionalidades, das melhorias ao desempenho e das correções de erro mais recentes. Se estiver a utilizar uma versão antiga e ainda em uso do SDK, os pedidos ao Azure Cosmos DB continuarão a funcionar, mas não terá acesso a nenhuma capacidade nova.

O que devo fazer se não conseguir atualizar a minha aplicação antes da data de descontinuação?

Recomendamos que atualize para o último SDK o mais cedo possível. Quando um SDK é marcado para descontinuação, tem 12 meses para atualizar a sua aplicação. Se não conseguir atualizar até à data de descontinuação, os pedidos enviados das versões descontinuadas do SDK continuam a ser servidos pelo Azure Cosmos DB, pelo que as aplicações em execução continuam a funcionar. Contudo, o Azure Cosmos DB deixará de fazer correções de erros, adicionar funcionalidades novas e fornecer suporte às versões descontinuadas do SDK.

Se tiver um plano de suporte e precisar de suporte técnico, preencha um pedido de suporte para nos contactar.

Como posso solicitar que os recursos sejam adicionados a um SDK ou conector?

Novos recursos nem sempre são adicionados a cada SDK ou conector imediatamente. Se houver um recurso não suportado que você gostaria de adicionar, por favor, adicione comentários ao nosso fórum da comunidade.

Consulte também

Para saber mais sobre o Azure Cosmos DB, consulte a página do serviço Microsoft Azure Cosmos DB .