Клиентская библиотека канала изменений BLOB-объектов службы хранилища Azure для .NET версии 12.0.0-preview.33

Версия сервера: 12.02.2021, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 и 2019-12-12

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

Исходный код | Пакет (NuGet) | Документация по продукту

Начало работы

Установка пакета

Установите клиентую библиотеку BLOB-объектов службы хранилища Azure для .NET с помощью NuGet:

dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease

Предварительные требования

Для использования этого пакета вам потребуется подписка Azure и учетная запись хранения .

Чтобы создать учетную запись хранения, можно использовать портал Azure, Azure PowerShell или Azure CLI. Ниже приведен пример с использованием Azure CLI:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Проверка подлинности клиента

Проверка подлинности работает так же, как в Azure.Storage.Blobs.

Основные понятия

Канал изменений хранится в виде больших двоичных объектов в специальном контейнере в учетной записи хранения со стандартной ценой больших двоичных объектов. Вы можете контролировать срок хранения этих файлов в соответствии с вашими требованиями (см. условия текущего выпуска). События изменения добавляются в канал изменений в виде записей в спецификации формата Apache Avro: компактный, быстрый двоичный формат, обеспечивающий широкие возможности структуры данных со встроенной схемой. Этот формат широко используется в экосистеме Hadoop, Stream Analytics и фабрике данных Azure.

Эти журналы можно обрабатывать постепенно или полностью. Любое количество клиентских приложений может независимо считывать информацию канала изменений, параллельно и в собственном темпе. Такие приложения аналитики, как Apache Drill или Apache Spark, могут использовать журналы непосредственно в качестве файлов Avro, что позволяет обрабатывать их с низкой стоимостью, с высокой пропускной способностью и без необходимости писать пользовательское приложение.

Потокобезопасность

Мы гарантируем, что все методы экземпляра клиента являются потокобезопасны и независимы друг от друга (руководство). Это гарантирует, что рекомендация по повторному использованию экземпляров клиента всегда будет безопасной, даже в разных потоках.

Дополнительные понятия

Параметры | клиента Доступ к ответу | Длительные операции | Обработка сбоев | Диагностики | Насмешливый | Время существования клиента

Примеры

Получение всех событий в канале изменений

// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
    changeFeedEvents.Add(changeFeedEvent);
}

Получение событий между временем начала и окончания

// Create the start and end time.  The change feed client will round start time down to
// the nearest hour, and round endTime up to the next hour if you provide DateTimeOffsets
// with minutes and seconds.
DateTimeOffset startTime = new DateTimeOffset(2017, 3, 2, 15, 0, 0, TimeSpan.Zero);
DateTimeOffset endTime = new DateTimeOffset(2020, 10, 7, 2, 0, 0, TimeSpan.Zero);

// You can also provide just a start or end time.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
    start: startTime,
    end: endTime))
{
    changeFeedEvents.Add(changeFeedEvent);
}

Resume with continuationToken

string continuationToken = null;
await foreach (Page<BlobChangeFeedEvent> page in changeFeedClient.GetChangesAsync().AsPages(pageSizeHint: 10))
{
    foreach (BlobChangeFeedEvent changeFeedEvent in page.Values)
    {
        changeFeedEvents.Add(changeFeedEvent);
    }

    // Get the change feed continuation token.  The continuation token is not required to get each page of events,
    // it is intended to be saved and used to resume iterating at a later date.
    continuationToken = page.ContinuationToken;
    break;
}

// Resume iterating from the pervious position with the continuation token.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
    continuationToken: continuationToken))
{
    changeFeedEvents.Add(changeFeedEvent);
}

Устранение неполадок

Все операции службы BLOB-объектов будут вызывать исключение RequestFailedException при сбое с полезнымиErrorCode s. Многие из этих ошибок можно исправить.

Дальнейшие действия

Начало работы с примерами канала изменений:

  1. Hello World: получение изменений, внесенных в учетную запись хранения (или асинхронно).
  2. Проверка подлинности. Проверка подлинности с помощью строк подключения, открытого доступа, общих ключей, подписанных URL-адресов и Azure Active Directory.

Участие

Дополнительные сведения о создании, тестировании и участии в этой библиотеке см. в CONTRIBUTING.md хранилища.

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.