Клиентская библиотека канала изменений BLOB-объектов службы хранилища Azure для JavaScript версии 12.0.0-preview.4
Версия сервера: 12.12.2019 или более поздняя.
Канал изменений предоставляет упорядоченный, гарантированный, устойчивый, неизменяемый журнал транзакций только для чтения со всеми изменениями, происходящими в больших двоичных объектах и метаданных BLOB-объектов в вашей учетной записи хранения. Клиентские приложения могут считывать эти журналы в любое время. Канал изменений позволяет создавать эффективные и масштабируемые решения, которые обрабатывают события изменения, происходящие в учетной записи хранения BLOB-объектов, с низкой стоимостью.
Этот проект предоставляет клиентскую библиотеку на JavaScript, которая упрощает использование веб-канала изменений.
Используйте клиентские библиотеки в этом пакете, чтобы:
- Чтение событий канала изменений( все или в пределах диапазона времени)
- Возобновление чтения событий из сохраненной позиции
Основные ссылки:
Начало работы
Поддерживаемые в настоящее время среды
- LTS версии Node.js
- Последние версии Safari, Chrome, Edge и Firefox.
Чтобы получить дополнительные сведения, ознакомьтесь с нашей политикой поддержки.
Предварительные требования
Установка пакета
Предпочтительным способом установки клиентской библиотеки канала изменений BLOB-объектов службы хранилища Azure для JavaScript является использование диспетчера пакетов npm. В окне терминала введите следующее:
npm install @azure/storage-blob-changefeed
Аутентификация клиента
Эта библиотека использует для инициализации проверку подлинности BlobServiceClient
. Сведения о проверке подлинности BlobServiceClient
см. в разделе Storage-BLOB-объекта.
Совместимость
Сейчас эта библиотека совместима только с Node.js.
Основные понятия
Канал изменений хранится в виде больших двоичных объектов в специальном контейнере в учетной записи хранения со стандартной ценой больших двоичных объектов. Вы можете управлять сроком хранения этих файлов в соответствии с вашими требованиями. События изменения добавляются в канал изменений в виде записей в спецификации формата Apache Avro: компактный, быстрый двоичный формат, обеспечивающий широкие возможности структуры данных со встроенной схемой. Этот формат широко используется в экосистеме Hadoop, Stream Analytics и фабрике данных Azure.
Эта библиотека предлагает клиент, который можно использовать для получения событий изменений.
Примеры
- Инициализация клиента канала изменений
- Чтение всех событий в канале изменений
- Возобновление событий чтения с помощью continuationToken
- Чтение событий в пределах диапазона времени
Инициализация клиента канала изменений
Требует почти те же параметры, что 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");
Дальнейшие действия
Дополнительные примеры кода:
- Примеры канала изменений хранилища BLOB-объектов (JavaScript)
- Примеры канала изменений хранилища BLOB-объектов (TypeScript)
- Тестовые случаи канала изменений хранилища BLOB-объектов
Участие
Если вы хотите вносить изменения в эту библиотеку, ознакомьтесь с руководством по внесению изменений, в котором содержатся сведения о создании и тестировании кода.
Дополнительные сведения о настройке тестовой среды для библиотек хранилища см. в руководстве по конкретному хранилищу.
Azure SDK for JavaScript