Пакет SDK для обработчика канала изменений в .NET: скачивание и заметки о выпуске (устаревшая версия)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Ссылки.
Скачивание пакета SDK NuGet
Документация по API Справочная документация по изменению API библиотеки обработчика веб-каналов
Начало работы Начало работы с пакетом SDK для обработчика канала изменений в .NET
Текущая поддерживаемая платформа Платформа Microsoft .NET Framework 4.5
Microsoft .NET Core

Примечание.

Если вы используете обработчик канала изменений, найдите последнюю версию 3.x пакета SDK для .NET со встроенной поддержкой канала изменений.

Заметки о выпуске

Сборки версии 2

2.5.0

  • Добавлен новый конструктор для Microsoft.Azure.Documents.ChangeFeedProcessor.Logging.TraceLogProvider класса, который принимает экземпляр в качестве аргумента System.Diagnostics.TraceSource . Это позволяет TraceLogProviderсоздавать объект трассировки .net программным способом из пользовательского TraceSource экземпляра, инициализированного в исходном коде. До этого изменения можно было настроить только трассировку .net с помощью файла конфигурации App.config.

2.4.0

  • Добавлена поддержка коллекций аренды, которые можно делить с помощью ключа, выраженного как /partitionKey. Перед этим необходимо задать ключ деления коллекции аренды как /id.
  • Этот выпуск позволяет использовать коллекции аренды с API для Gremlin, так как коллекции Gremlin не могут иметь ключ секции, определенный как /id.

2.3.2

  • Включена совместимость хранилища аренды с пакетом SDK для версии 3, который включает пути горячей миграции. Приложение может перейти на пакет SDK версии 3, а затем обратно на библиотеку обработчика канала изменений без потери состояния.

2.3.1

  • Исправлена проблема, из-за которой причина закрытия FeedProcessing.ChangeFeedObserverCloseReason.Unknown отправлялась в FeedProcessing.IChangeFeedObserver.CloseAsync, если раздел не был найден или если целевая реплика устарела для сеанса чтения. В таких случаях теперь используются причины закрытия FeedProcessing.ChangeFeedObserverCloseReason.ResourceGone и FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable.
  • Добавлена новая причина закрытия FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable, отправляемая для закрытия наблюдателя канала изменений, если целевая реплика устарела для сеанса чтения.

2.3.0

  • Добавлен новый метод ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory и соответствующий открытый интерфейс ICheckpointPartitionProcessorFactory. Это позволяет в реализации интерфейса IPartitionProcessor использовать встроенный механизм создания контрольных точек. Новая фабрика аналогична существующей IPartitionProcessorFactory, за исключением того, что метод Create в ней принимает дополнительный параметр ILeaseCheckpointer.
  • Для одного экземпляра ChangeFeedProcessorBuilder можно использовать только один из двух методов: ChangeFeedProcessorBuilder.WithPartitionProcessorFactory или ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory.

2.2.8

  • Улучшения стабильности и диагностики:
    • Добавлена поддержка обнаружения длительного процесса чтения канала изменений. Если значение, указанное ChangeFeedProcessorOptions.ChangeFeedTimeout свойством, занимает больше времени, выполните следующие действия.
      • Прерывается операция чтения канала изменений для проблемной секции.
      • Экземпляр обработчика веб-канала изменений отменяет владение проблемной арендой. Отмененная аренда будет снова получена при следующей операции получения аренды, тем же или другим экземпляром обработчика канала изменений. Это означает, что чтение канала изменений начнется заново.
      • Сообщение об этой проблеме передается в монитор работоспособности. Монитор работоспособности по умолчанию отправляет все обнаруженные проблемы в журнал трассировки.
    • Добавлено новое открытое свойство ChangeFeedProcessorOptions.ChangeFeedTimeout. Значение этого свойства по умолчанию равно 10 минутам.
    • Добавлено новое открытое значение перечисления Monitoring.MonitoredOperation.ReadChangeFeed. Если для параметра HealthMonitoringRecord.Operation задано значение Monitoring.MonitoredOperation.ReadChangeFeed, значит проблема с работоспособностью связана с чтением канала изменений.

2.2.7

  • Улучшенная стратегия балансировки нагрузки для сценария при получении всех аренд занимает больше времени, чем интервал истечения срока действия аренды, например из-за проблем с сетью:
    • В этом сценарии алгоритм балансировки нагрузки ранее ошибочно объявлял срок действия аренды истекшим, что приводило к перехвату аренды у активных владельцев. Это могло приводить к ненужному перераспределению большого количества аренд.
    • В этом выпуске проблема исправлена, и теперь повторные попытки не выполняются в случае конфликта при получении аренды с истекшим сроком действия, если владелец аренды не изменился, а получение аренды с истекшим сроком действия откладывается до следующей итерации балансировки нагрузки.

2.2.6

  • Улучшена обработка исключений Observer.
  • Более подробные сведения об ошибках наблюдателя:
    • Если операции с Observer прерываются из-за исключения, вызванного ProcessChangesAsync, CloseAsync получит параметр reason с заданным значением ChangeFeedObserverCloseReason.ObserverError.
    • Добавлены трассировки для выявления ошибок в пользовательском коде в Observer.

2.2.5

  • Добавлена поддержка обработки разбиения коллекций, использующих пропускную способность общей базы данных.
    • В этом выпуске устранена проблема, из-за которой во время разбиения коллекций с использованием пропускной способности общей базы данных происходило перераспределение разделов с созданием только одного диапазона ключей дочернего раздела, а не двух. В таких ситуациях обработчик канала изменений может зависнуть, удаляя аренду для старого диапазона ключей раздела и не создавая новые аренды. В этом выпуске эта проблема исправлена.

2.2.4

  • Добавлено новое свойство ChangeFeedProcessorOptions.StartContinuation для включения поддержки при запуске канала изменений из маркера продолжения запроса. Используется, только если возвращается пустая коллекция аренды или для аренды не настроен параметр ContinuationToken. Для аренды в коллекции аренды с настроенным и используемым параметром ContinuationToken свойство ChangeFeedProcessorOptions.StartContinuation игнорируется.

2.2.3

  • Добавлена поддержка пользовательского хранилища для хранения маркеров продолжения для секций.
    • Например, хранилище пользовательской аренды может быть коллекцией аренд Azure Cosmos DB, секционированной любым способом.
    • Хранилища пользовательских аренд могут использовать новый общедоступный интерфейс ILeaseStoreManager и свойство ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) точки расширяемости.
    • Для интерфейса ILeaseManager выполнен рефакторинг в нескольких интерфейсах роли.
  • Незначительное критическое изменение: удалено свойство точки расширяемости ChangeFeedProcessorBuilder.WithLeaseManager(ILeaseManager). Вместо этого используйте свойство ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager).

2.2.2

  • Этот выпуск устраняет проблему, которая происходит во время обработки разбиения в отслеживаемой коллекции и использования секционированной коллекции аренд. При обработке аренды для разбиения секций, аренда, соответствующая этой секции, не будет удалена. В этом выпуске эта проблема исправлена.

2.2.1

  • Исправлено вычисление оценки для учетных записей с несколькими регионами записи и новым форматом токена сеанса.

2.2.0

  • Добавлена поддержка для секционированных коллекций аренд. Ключ секции должен быть определен как /id.
  • Небольшое критическое изменение: методы интерфейса IChangeFeedDocumentClient и класса ChangeFeedDocumentClient были изменены для включения параметров RequestOptions и CancellationToken. IChangeFeedDocumentClient представляет собой точку расширяемости с дополнительными возможностями, которая позволяет создавать собственную реализацию клиента документов, которая будет использоваться с обработчиком канала изменений, например декорировать клиент документов и перехватывать все вызовы к нему для дополнительной трассировки, обработки ошибок и т. д. После этого обновления в код, который реализует IChangeFeedDocumentClient, необходимо будет включить новые параметры.
  • Незначительные усовершенствования диагностики .

2.1.0

  • Добавлен новый API Task<IReadOnlyList<RemainingPartitionWork>> IRemainingWorkEstimator.GetEstimatedRemainingWorkPerPartitionAsync(). Его можно использовать для получения оценки работ для каждого раздела.
  • Поддерживает Microsoft.Azure.DocumentDB SDK 2.0. Требуется Microsoft.Azure.DocumentDB 2.0 или более поздней версии.

2.0.6

  • Добавлено общедоступное свойство ChangeEventHost.HostName для совместимости с версией 1.

2.0.5

  • Исправлено состояние гонки, которое возникло во время разделения секций. Состояние гонки может привести к получению аренды и немедленной потере права на нее при разделении секций, а также привести к состязанию. Проблема с состоянием гонки исправлена в этом выпуске.

2.0.4

  • Пакет SDK общей доступности.

Предварительный выпуск 2.0.3

  • Исправлены следующие ошибки:

    • При разделении секции может дублироваться обработка документов, созданных до разделения.
    • API GetEstimatedRemainingWork возвратил 0 при отсутствии аренды в коллекции.
  • Приведенные ниже исключения сделаны общедоступными. Расширения, реализующие IPartitionProcessor, могут выдавать эти исключения.

    • 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

  • Незначительные изменения API:
    • Удаление ChangeFeedProcessorOptions.IsAutoCheckpointEnabled как устаревшего.

Предварительный выпуск 2.0.1

  • Улучшения стабильности:
    • Улучшение обработки при инициализации хранилища аренды. Если хранилище аренды пустое, инициализировать его может только один экземпляр обработчика. Остальные будут находиться в состоянии ожидания.
    • Более стабильное и эффективное обновление и освобождение аренды. Обновление и освобождение аренды одной секции не зависит от обновления других. В версии 1 процедура последовательно выполнялась для всех секций.
  • Новый API версии 2:
    • Шаблон построителя для повышения гибкости при создании процессора: класс ChangeFeedProcessorBuilder.
      • Может принимать любое сочетание параметров.
      • Может принимать экземпляр DocumentClient для мониторинга и (или) коллекции аренды (недоступно в версии 1).
    • IChangeFeedObserver.ProcessChangesAsync теперь принимает CancellationToken.
    • IRemainingWorkEstimator — средство оценки оставшихся трудозатрат можно использовать отдельно от процессора.
    • Новые точки расширяемости:
      • IPartitionLoadBalancingStrategy — для пользовательской балансировки нагрузки в секциях между экземплярами процессора.
      • ILease, ILeaseManager — для пользовательского управления арендой.
      • IPartitionProcessor — для пользовательского обработки изменений в секции.
  • Для ведения журнала используется библиотека LibLog.
  • Полная обратная совместимость с API версии 1.
  • Новая база кода.
  • Совместимость с пакетом SDK .NET для SQL версии 1.21.1 и выше.

Сборки версии 1

1.3.3

  • В журнал записываются дополнительные сведения.
  • Исправлена утечка DocumentClient при неоднократном вызове оценки работы в режиме ожидания.

1.3.2

  • Исправления в оценке работы в режиме ожидания.

1.3.1

  • Улучшение стабильности.
    • Устранена проблема с отмененными задачами, которая могла вызывать остановку работы наблюдателей в некоторых секциях.
  • Поддержка использования контрольных точек вручную.
  • Совместимость с пакетом SDK .NET для SQL версии 1.21 и выше.

1.2.0

  • Добавляет поддержку .NET Standard 2.0. Теперь пакет поддерживает моникеры платформ netstandard2.0 и net451.
  • Совместимость с пакетом SDK для .NET для SQL версии 1.17.0 и более поздних версий.
  • Совместимость с пакетом SDK для .NET Core для SQL версии 1.5.1 и более поздних версий.

1.1.1

  • Устраняет проблему при расчете оставшейся работы, если канал изменений был пуст или никакие действия не ожидались.
  • Совместимость с пакетом SDK для .NET для SQL версии 1.13.2 и более поздних версий.

1.1.0

  • Добавлен метод для оценки оставшейся работы для обработки в веб-канале изменений.
  • Совместимость с пакетом SDK для .NET для SQL версии 1.13.2 и более поздних версий.

1.0.0

Даты выпуска и выбытия

Корпорация Майкрософт отправит уведомление минимум за 12 месяцев до вывода пакета SDK из эксплуатации, чтобы обеспечить более плавный переход на новую или поддерживаемую версию. Новые функции, возможности и оптимизации добавляются только в текущую версию пакета SDK, поэтому рекомендуется как можно раньше обновлять пакет SDK до последней версии.

Предупреждение

После 31 августа 2022 года Azure Cosmos DB больше не исправит ошибки, добавит новые функции и обеспечивает поддержку версий 1.x пакета SDK для .NET или .NET Core azure Cosmos DB для API для NoSQL. Даже если вы не выполните обновление, запросы, отправляемые из версий 1.х пакета SDK, будут обрабатываться службой Azure Cosmos DB.


Версия Дата выпуска Дата прекращения поддержки
2.5.0 15 мая 2023 г. ---
2.4.0 6 мая 2021 г. ---
2.3.2 11 августа 2020 г. ---
2.3.1 30 июля 2020 г. ---
2.3.0 2 апреля 2020 г. ---
2.2.8 28 октября 2019 г. ---
2.2.7 14 мая 2019 г. ---
2.2.6 29 января 2019 г. ---
2.2.5 13 декабря 2018 г. ---
2.2.4 29 ноября 2018 г. ---
2.2.3 19 ноября 2018 г. ---
2.2.2 31 октября 2018 г. ---
2.2.1 24 октября 2018 г. ---
1.3.3 8 мая 2018 г. ---
1.3.2 18 апреля 2018 г. ---
1.3.1 March 13, 2018 (Описание обновления системы безопасности для устранения уязвимости CredSSP, допускающей удаленное выполнение кода, в Windows Server 2008, Windows Embedded POSReady 2009 и Windows Embedded Standard 2009: 13 марта 2018 г.). ---
1.2.0 31 октября 2017 г. ---
1.1.1 29 августа 2017 г. ---
1.1.0 13 августа 2017 г. ---
1.0.0 7 июля 2017 г. ---

Вопросы и ответы

Как меня уведомят о прекращении поддержки пакета SDK?

Корпорация Майкрософт за 12 месяцев отправит предварительное уведомление об окончании поддержки пакета SDK, чтобы обеспечить более плавный переход на поддерживаемый пакет SDK. Вы будете уведомлены через разные каналы связи, включая портал Azure и обновления Azure, а также непосредственное общение с назначенными администраторами служб.

Могу ли я во время этого периода в 12 месяцев создавать приложения, используя пакет SDK для Azure Cosmos DB, поддержка которого будет прекращена?

Да, в течение 12-месячного периода уведомления вы сможете разрабатывать, развертывать и изменять приложения с помощью пакета SDK для Azure Cosmos DB, поддержка которого будет прекращена. Мы рекомендуем при удобной возможности перейти на новую поддерживаемую версию Azure Cosmos DB пакета SDK в течение 12-месячного периода уведомления.

Что произойдет с приложениями, использующими неподдерживаемый пакет SDK Azure Cosmos DB, после истечения этого срока?

После прекращения поддержки Azure Cosmos DB больше не будет получать исправления ошибок, новые функции или поддержку для устаревших версий пакета SDK. Даже если вы не выполните обновление, запросы, отправляемые из устаревших версий пакета SDK, будут обрабатываться службой Azure Cosmos DB.

Какие версии пакета SDK получат последние функции и обновления?

Новые функции и обновления получит только последняя дополнительная версия последней основной поддерживаемой версии пакета SDK. Мы рекомендуем всегда работать с последней версией, чтобы вы имели доступ к новым функциям, улучшениям производительности и исправлениям ошибок. Если вы используете старую, но еще поддерживаемую версию пакета SDK, запросы в Azure Cosmos DB будут выполняться без изменений, но вы не сможете использовать новые функции.

Что делать, если не удается обновить приложение до даты прекращения поддержки?

Рекомендуется как можно раньше выполнить обновление до последней версии SDK. После уведомления о том, что поддержка пакета SDK будет прекращена, у вас будет 12 месяцев на обновление приложения. Даже если вы не сможете выполнить обновление до объявленной даты, запросы, отправляемые из устаревших версий пакета SDK, будут обрабатываться Azure Cosmos DB, поэтому выполняющиеся приложения будут работать. Но Azure Cosmos DB больше не будет получать исправления ошибок, новые функции или поддержку для устаревших версий пакета SDK.

Если у вас есть план поддержки и вам требуется техническая поддержка, свяжитесь с нами, отправив соответствующий запрос.

Как запросить добавление компонентов в пакет SDK или соединитель?

Новые функции не всегда добавляются во все пакеты SDK или соединители сразу. Если вам хотелось бы добавить функцию, которая в настоящее время не поддерживается, напишите об этом на нашем форуме сообщества.

См. также

Дополнительные сведения о Azure Cosmos DB см . на странице службы Microsoft Azure Cosmos DB .