你当前正在访问 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 中的客户端库,以便轻松使用更改源。
使用此包中的客户端库可以:
- 读取更改源事件,全部或在一个时间范围内
- 从保存的位置恢复读取事件
关键链接:
入门
目前支持的环境
- LTS 版本的 Node.js
- 最新版本的 Safari、Chrome、Edge 和 Firefox。
有关更多详细信息,请参阅我们的支持政策。
先决条件
安装包
安装适用于 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");
后续步骤
更多代码示例:
贡献
若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。
有关为存储库设置测试环境的其他信息,请参阅特定于存储的 指南 。