Поделиться через


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

Версия сервера: 12.12.2019 или более поздняя.

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

Этот проект предоставляет клиентскую библиотеку на JavaScript, которая упрощает использование веб-канала изменений.

Используйте клиентские библиотеки в этом пакете, чтобы:

  • Чтение событий канала изменений( все или в пределах диапазона времени)
  • Возобновление чтения событий из сохраненной позиции

Основные ссылки:

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

Поддерживаемые в настоящее время среды

Чтобы получить дополнительные сведения, ознакомьтесь с нашей политикой поддержки.

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

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

Предпочтительным способом установки клиентской библиотеки канала изменений BLOB-объектов службы хранилища Azure для JavaScript является использование диспетчера пакетов npm. В окне терминала введите следующее:

npm install @azure/storage-blob-changefeed

Аутентификация клиента

Эта библиотека использует для инициализации проверку подлинности BlobServiceClient . Сведения о проверке подлинности BlobServiceClientсм. в разделе Storage-BLOB-объекта.

Совместимость

Сейчас эта библиотека совместима только с Node.js.

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

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

Эта библиотека предлагает клиент, который можно использовать для получения событий изменений.

Примеры

Инициализация клиента канала изменений

Требует почти те же параметры, что BlobServiceClient и для инициализацииBlobChangeFeedClient. Сведения о том, как создать клиент службы BLOB-объектов, см. в разделе Storage-blob . Ниже приводится пример использования StorageSharedKeyCredential.

const { StorageSharedKeyCredential } = require("@azure/storage-blob");
const { BlobChangeFeedClient } = require("@azure/storage-blob-changefeed");

// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const changeFeedClient = new BlobChangeFeedClient(
  // When using AnonymousCredential, following url should include a valid SAS or support public access
  `https://${account}.blob.core.windows.net`,
  sharedKeyCredential
);

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

Используйте для BlobChangeFeedClient.listChanges() получения итераторов для итерации по событиям изменений.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
for await (const event of changeFeedClient.listChanges()) {
  changeFeedEvents.push(event);
}

По страницам.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
for await (const eventPage of changeFeedClient.listChanges().byPage()) {
  for (const event of eventPage.events) {
    changeFeedEvents.push(event);
  }
}

Возобновление событий чтения с помощью continuationToken

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
const firstPage = await changeFeedClient
  .listChanges()
  .byPage({ maxPageSize: 10 })
  .next();
for (const event of firstPage.value.events) {
  changeFeedEvents.push(event);
}

// Resume iterating from the previous position with the continuationToken.
for await (const eventPage of changeFeedClient
  .listChanges()
  .byPage({ continuationToken: firstPage.value.continuationToken })) {
  for (const event of eventPage.events) {
    changeFeedEvents.push(event);
  }
}

Чтение событий в пределах диапазона времени

Передайте время начала и окончания, чтобы BlobChangeFeedClient.listChanges() получить события в пределах диапазона времени.

Обратите внимание, что сейчас клиент канала изменений округляет время начала до ближайшего часа, а время окончания — до следующего часа.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

const start = new Date(Date.UTC(2020, 1, 21, 22, 30, 0)); // will be rounded down to 22:00
const end = new Date(Date.UTC(2020, 4, 8, 21, 10, 0)); // will be rounded up to 22:00

let changeFeedEvents = [];
// You can also provide just a start or end time.
for await (const event of changeFeedClient.listChanges({ start, end })) {
  changeFeedEvents.push(event);
}

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

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. Кроме того, ведение журнала можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

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

Дополнительные примеры кода:

Участие

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

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

Просмотры