你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 JavaScript 的 Azure 存储 Blob 更改源客户端库 - 版本 12.0.0-preview.4

服务器版本:2019-12-12 或更高版本。

更改源为存储帐户中的 Blob 和 Blob 元数据发生的所有更改提供有序、有保证、持久、不可变的只读事务日志。 客户端应用程序可以随时读取这些日志。 使用更改源可以生成高效且可缩放的解决方案,因此能够以较低的成本处理 Blob 存储帐户中发生的更改事件。

此项目提供 JavaScript 中的客户端库,以便轻松使用更改源。

使用此包中的客户端库可以:

  • 读取更改源事件,全部或在一个时间范围内
  • 从保存的位置恢复读取事件

关键链接:

入门

目前支持的环境

有关更多详细信息,请参阅我们的支持政策

先决条件

安装包

安装适用于 JavaScript 的 Azure 存储 Blob 更改源客户端库的首选方法是使用 npm 包管理器。 在终端窗口中键入以下内容:

npm install @azure/storage-blob-changefeed

验证客户端

此库使用经过身份验证的 BlobServiceClient 初始化。 有关如何对 进行身份验证,BlobServiceClient请参阅 storage-blob

兼容性

目前,此库仅与 Node.js 兼容。

关键概念

更改源作为 Blob 存储在存储帐户中的特殊容器内,按标准的 Blob 定价计费。 可以根据要求控制这些文件的保留期。 更改事件根据 Apache Avro 格式(一种简洁且快速的二进制格式,通过内联架构提供丰富的数据结构)规范以记录的形式追加到更改源。 这种格式广泛用于 Hadoop 生态系统、流分析和 Azure 数据工厂。

此库提供可用于提取更改事件的客户端。

示例

初始化更改源客户端

BlobChangeFeedClient需要与 初始化几乎相同的参数BlobServiceClient。 有关如何创建 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。 或者,可以在运行时通过调用 @azure/logger 中的 setLogLevel 来启用日志记录:

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

setLogLevel("info");

后续步骤

更多代码示例:

贡献

若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。

有关为存储库设置测试环境的其他信息,请参阅特定于存储的 指南

曝光数