SDK do Processador de Feed de Alterações do .NET: download e notas sobre a versão (herdado)

APLICA-SE A: NoSQL

Links
Baixe o SDK NuGet
Documentação da API Alterar a documentação de referência de API da biblioteca do Processador de Feed
Introdução Introdução ao SDK .NET do processador do feed de alterações
Framework atualmente com suporte Microsoft .NET Framework 4.5
Microsoft .NET Core

Observação

Se você estiver usando o processador do feed de alterações, consulte a versão mais recente 3.x do SDK .NET, que tem o feed de alterações interno do SDK.

Notas de versão

v2 builds

2.5.0

  • Adicionado novo construtor para a classe Microsoft.Azure.Documents.ChangeFeedProcessor.Logging.TraceLogProvider 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 do .net usando o arquivo App.config.

2.4.0

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

2.3.2

  • Foi adicionada a compatibilidade do repositório de concessão com o SDK V3 que habilita caminhos de migração quente. Um aplicativo pode ser migrado para o SDK V3 e retornar para a biblioteca do processador do Feed de Alterações sem perder nenhum estado.

2.3.1

  • Foi corrigido um caso em que o motivo de fechamento FeedProcessing.ChangeFeedObserverCloseReason.Unknown era enviado para FeedProcessing.IChangeFeedObserver.CloseAsync quando a partição não era encontrada ou a réplica de destino não estava atualizada com a sessão de leitura. Nesses casos, agora são usados os motivos de fechamento FeedProcessing.ChangeFeedObserverCloseReason.ResourceGone e FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable.
  • Foi adicionado o novo motivo de fechamento 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

  • Adição de um novo método ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory e da interface pública ICheckpointPartitionProcessorFactory correspondente. Isso permite que uma implementação da interface de IPartitionProcessor use o mecanismo de ponto de verificação interno. O novo alocador é semelhante ao atual IPartitionProcessorFactory, exceto que seu método Create também usa o parâmetro ILeaseCheckpointer.
  • Somente um dos dois métodos, ChangeFeedProcessorBuilder.WithPartitionProcessorFactory ou ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory, pode ser usado para a mesma instância de ChangeFeedProcessorBuilder.

2.2.8

  • Melhorias na estabilidade e na capacidade de diagnóstico:
    • Adição de suporte para detectar a leitura do feed de alterações que demora muito. Quando leva mais tempo 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 foi anulada.
      • A instância do processador do feed de alterações elimina a propriedade da concessão problemática. A concessão descartada será coletada durante a próxima etapa de aquisição de concessão, que será feita pela mesma instância do processador do feed de alterações ou por uma diferente. Dessa forma, a leitura do feed de alterações será reiniciada.
      • Um problema é relatado no monitor de integridade. O monitor de integridade padrão envia todos os problemas relatados para o log de rastreamento.
    • Adição de uma nova propriedade pública: ChangeFeedProcessorOptions.ChangeFeedTimeout. O valor padrão dessa propriedade é de 10 minutos.
    • Adição de um novo valor enum: Monitoring.MonitoredOperation.ReadChangeFeed. Quando o valor de HealthMonitoringRecord.Operation é definido como Monitoring.MonitoredOperation.ReadChangeFeed, isso indica que o problema de integridade está relacionado à 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:
    • Nesse cenário, o algoritmo de balanceamento de carga considerava incorretamente as concessões como expiradas, causando o roubo de concessões de proprietários ativos. Isso podia disparar um rebalanceamento desnecessário de várias concessões.
    • Esse problema foi corrigido nesta versão, evitando uma nova tentativa em conflito ao adquirir a concessão expirada cujo proprietário não foi alterado e adiar a aquisição da concessão expirada para a próxima iteração de balanceamento de carga.

2.2.6

  • Melhoria no tratamento de exceções de Observador.
  • Informações mais detalhadas sobre erros do Observer:
    • Quando um Observador for fechado devido a uma exceção gerada por ProcessChangesAsync do Observador, o CloseAsync receberá o parâmetro de motivo definido como ChangeFeedObserverCloseReason.ObserverError.
    • Rastreamentos adicionados para identificar erros no código do usuário em um Observador.

2.2.5

  • Suporte adicionado para manipular a divisão em coleções que usam taxa de transferência de banco de dados compartilhado.
    • Esta versão corrige um problema que pode ocorrer durante a divisão em coleções que usam a taxa de transferência de banco de dados compartilhado, quando a divisão resulta no rebalanceamento da partição com somente um intervalo de chave de partição filho em vez de dois. Quando isso acontece, o Processador do Feed de Alterações poderá ficar preso ao excluir a concessão para o intervalo de chave de partição antigo e não criar novas concessões. Esse problema foi corrigido nesta versão.

2.2.4

  • Adicionada nova propriedade ChangeFeedProcessorOptions.StartContinuation para dar suporte ao feed de alterações do token de continuação da solicitação. Isso é usado apenas quando a coleção de concessão estiver vazia ou uma concessão não tiver ContinuationToken definido. Para concessões na coleção de concessão que têm o ContinuationToken definido, o ContinuationToken é usado e ChangeFeedProcessorOptions.StartContinuation será ignorado.

2.2.3

  • Adicionado suporte para o uso de armazenamento personalizado para manter os tokens de continuação por partição.
    • Por exemplo, um armazenamento personalizado de concessão pode ser a coleção de concessão do Azure Cosmos DB particionada de qualquer forma personalizada.
    • Os armazenamentos de concessão personalizados podem usar o novo ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) de ponto de extensibilidade e interface pública ILeaseStoreManager.
    • Refatorada a interface ILeaseManager em várias interfaces de função.
  • Pequena alteração significativa: ponto de extensibilidade removido ChangeFeedProcessorBuilder.WithLeaseManager(ILeaseManager), use ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager)no lugar.

2.2.2

  • Esta versão corrige um problema que ocorre durante o processamento de uma divisão na coleção monitorada e usa uma coleção de concessão particionada. Ao processar uma concessão de partição de divisão, a concessão correspondente a essa partição não pode ser excluída. Esse problema foi corrigido nesta versão.

2.2.1

  • Foi corrigido o cálculo do avaliador para contas com várias regiões de gravação e um novo formato do token de sessão.

2.2.0

  • Adicionado suporte a coleções particionadas de concessão. A chave de partição deve ser definida como /id.
  • Pequena alteração interruptiva: os métodos da interface IChangeFeedDocumentClient e a classe ChangeFeedDocumentClient foram alterados para incluir parâmetros RequestOptions e CancellationToken. O IChangeFeedDocumentClient é um ponto de extensibilidade avançado que permite fornecer uma implementação personalizada do Cliente de Documento a ser usado com o Processador do Feed de Alterações. Por exemplo, decorar o DocumentClient e interceptar todas as chamadas a ele para executar um rastreamento extra, o tratamento de erro e outras ações. Com essa atualização, o código que implementa IChangeFeedDocumentClient precisará ser alterado para incluir novos parâmetros na implementação.
  • Pequenos aprimoramentos de diagnóstico.

2.1.0

  • Adicionada nova API, Task <IReadOnlyList< RemainingPartitionWork>> IRemainingWorkEstimator.GetEstimatedRemainingWorkPerPartitionAsync (). Isso pode ser usado para obter trabalho estimado para cada partição.
  • Dá suporte a Microsoft.Azure.DocumentDB SDK 2.0. Requer Microsoft.Azure.DocumentDB 2.0 ou posterior.

2.0.6

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

2.0.5

  • Correção de uma condição de corrida que ocorre durante a divisão de partição. A condição de corrida pode levar a aquisição de concessão e imediatamente perdê-la durante a divisão de partição e causando a contenção. O problema de condição de corrida é corrigido com esta versão.

2.0.4

  • SDK DO GA

2.0.3-prerelease

  • Os seguintes problemas foram corrigidos:

    • Quando ocorre a divisão de partição, pode ser processamento duplicado de documentos modificados antes da divisão.
    • A API GetEstimatedRemainingWork retornou 0 quando nenhuma concessão estava presente na coleção de concessão.
  • As seguintes exceções são tornadas públicas. Extensões que implementam IPartitionProcessor podem gerar essas 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 - pré-lançamento

  • Pequenas alterações na API:
    • Removido ChangeFeedProcessorOptions.IsAutoCheckpointEnabled que foi marcado como obsoleto.

2.0.1-pré-lançamento

  • Melhorias de estabilidade:
    • Melhor tratamento da inicialização do armazenamento de concessão. Quando o armazenamento de concessão estiver vazio, apenas uma instância do processador poderá inicializá-lo, os outros aguardarão.
    • Lançamento/renovação da concessão mais estável/eficiente. Renovar e liberar uma concessão de uma partição independe de outras renovações. Na v1 isso foi 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 ser qualquer combinação de parâmetros.
      • Pode usar a instância de DocumentClient para monitoramento e/ou coleta de concessão (não disponível em v1).
    • IChangeFeedObserver.ProcessChangesAsync agora utiliza CancellationToken.
    • IRemainingWorkEstimator - o avaliador de trabalho restante pode ser usado separadamente do processador.
    • Novos pontos de extensibilidade:
      • IPartitionLoadBalancingStrategy - para balanceamento de carga personalizado de partições entre instâncias do processador.
      • ILease, ILeaseManager - para gerenciamento de concessão personalizado.
      • IPartitionProcessor - para processamento personalizado de alterações em uma partição.
  • Registro em log - usa a biblioteca LibLog.
  • 100% compatível com versões anteriores com API v1.
  • Nova base de código.
  • Compatível com o SQL .NET SDK versões 1.21.1 e superiores.

v1 builds

1.3.3

  • Adição de mais registros em log.
  • Correção de um vazamento de DocumentClient ao chamar a estimativa de trabalho pendente várias vezes.

1.3.2

  • Correções na estimativa de trabalho pendente.

1.3.1

  • Aprimoramentos de estabilidade.
    • Correção na manipulação de problemas de tarefas canceladas que podem levar a observadores parados em algumas partições.
  • Suporte para o ponto de verificação manual.
  • Compatível com o SDK do .NET para SQL versões 1.21 e superiores.

1.2.0

  • Adiciona suporte para o .NET Standard 2.0. O pacote agora dá suporte a monikers de estrutura netstandard2.0 e net451.
  • Compatível com o SDK do .NET para SQL versões 1.17.0 e superiores.
  • Compatível com o SDK do .NET Core para SQL versões 1.5.1 e superiores.

1.1.1

  • Corrige um problema com o cálculo da estimativa de trabalho restante quando o feed de alterações estava vazio ou nenhum trabalho estava pendente.
  • Compatível com o SDK do .NET para SQL versões 1.13.2 e superiores.

1.1.0

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

1.0.0

Datas de lançamento e desativação

A Microsoft fornecerá uma notificação pelo menos 12 meses antes de desativar um SDK, a fim de realizar uma transição tranquila para uma versão mais recente/com suporte. Os novos recursos, funcionalidades e otimizações são adicionados apenas ao SDK atual. Portanto, recomendamos que você atualize sempre que possível para a versão do SDK mais recente.

Aviso

Após 31 de agosto de 2022, o Azure Cosmos DB não fará mais correções de bug, não adicionará novos recursos nem dará suporte às versões 1.x do SDK do .NET Core ou do .NET do Azure Cosmos DB para a API para NoSQL. Se você preferir não fazer a atualização, as solicitações enviadas da versão 1.x do SDK continuarão a ser atendidas pelo serviço Azure Cosmos DB.


Versão Data de lançamento Data de desativaçã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 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 31 de outubro de 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 ---

Perguntas frequentes

Como serei notificado sobre a desativação do SDK?

A Microsoft enviará uma notificação com 12 meses de antecedência informando sobre o fim do suporte para o SDK a ser desativado, para facilitar uma transição suave para um SDK com suporte. Você será notificado por meio de vários canais de comunicação: o portal do Azure, as atualizações do Azure e a comunicação direta com os administradores de serviços atribuídos.

Durante o período de 12 meses, posso criar aplicativos usando um SDK do Azure Cosmos DB que será desativado?

Sim, durante o período de notificação de 12 meses, você poderá criar, implantar e modificar aplicativos usando o SDK do Azure Cosmos DB que será desativado. Recomendamos que você migre para uma versão do SDK do Azure Cosmos DB mais recente com suporte durante o período de notificação de 12 meses, conforme o necessário.

Após a data de desativação, o que acontece com os aplicativos que usam o SDK do Azure Cosmos DB sem suporte?

Após a data de desativação, o Azure Cosmos DB não fará mais correções de bug, não adicionará novos recursos nem dará suporte às versões desativadas do SDK. Se você preferir não fazer a atualização, as solicitações enviadas das versões desativadas do SDK continuarão sendo atendidas pelo serviço Azure Cosmos DB.

Quais versões do SDK terão os recursos e as atualizações mais recentes?

Os novos recursos e atualizações serão adicionados somente à última versão secundária da última versão principal do SDK com suporte. Recomendamos que você sempre use a última versão para aproveitar os novos recursos, os aprimoramentos de desempenho e as correções de bug. Se você estiver usando uma versão antiga e não desativada do SDK, suas solicitações para o Azure Cosmos DB continuarão a funcionar, mas você não terá acesso a nenhuma funcionalidade nova.

O que fazer se eu não conseguir atualizar meu aplicativo antes da data limite?

Recomendamos atualizar o mais rápido possível para o SDK mais recente. Depois que um SDK for marcado para desativação, você terá 12 meses para atualizar seu aplicativo. Se você não conseguir fazer a atualização até data de desativação, as solicitações enviadas das versões desativadas do SDK continuarão a ser atendidas pelo Azure Cosmos DB, para que os aplicativos em execução continuem a funcionar. No entanto, o Azure Cosmos DB não fará mais correções de bug, não adicionará novos recursos nem dará suporte às versões desativadas do SDK.

Se você tem um plano de suporte e precisa de suporte técnico, entre em contato conosco abrindo um tíquete de suporte.

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

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

Confira também

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