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

适用于 JavaScript 的 Azure 架构注册表 Avro 序列化程序客户端库 - 版本 1.0.0

Azure 架构注册表是由 Azure 事件中心 托管的架构存储库服务,提供架构存储、版本控制和管理。 此包提供 Avro 序列化程序,能够序列化和反序列化包含 Avro 序列化数据的有效负载。

关键链接:

入门

先决条件

安装 @azure/schema-registry-avro

使用 npm安装适用于 JavaScript 的 Azure 文本分析 客户端库:

npm install @azure/schema-registry-avro

关键概念

AvroSerializer

提供 API,用于对包装在包含架构 ID 的内容类型字段的消息中的 Avro 二进制编码进行序列化和反序列化。 使用 SchemaRegistryClient@azure/schema-registry 包中的 从架构定义获取架构 ID,反之亦然。 提供的 API 具有内部缓存,以避免在可能的情况下调用架构注册表服务。

消息

默认情况下,序列化程序将创建如下结构的消息:

  • data:包含 Avro 二进制编码中的数据的字节数组。 请注意,它不是 Avro 对象容器文件。 后者包括架构,创建架构会破坏使用此序列化程序将架构移出消息有效负载并移入架构注册表的目的。

  • contentType:以下格式 avro/binary+<Schema ID> 的字符串, avro/binary 其中部件指示此消息具有 Avro 序列化的有效负载,部件 <Schema Id> 是架构注册表服务分配给用于序列化此有效负载的架构的架构 ID。

并非所有消息传送服务都支持相同的消息结构。 若要启用与此类服务的集成,序列化程序可以通过使用相应的消息生成者和使用者在构造函数中设置 messageAdapter 选项来处理自定义消息结构。 Azure 消息客户端库为其消息类型导出默认适配器。

示例

序列化和反序列化 的@azure/event-hubsEventData

const { DefaultAzureCredential } = require("@azure/identity");
import { createEventDataAdapter } from "@azure/event-hubs";
const { SchemaRegistryClient } = require("@azure/schema-registry");
const { AvroSerializer } = require("@azure/schema-registry-avro");

const client = new SchemaRegistryClient(
  "<fully qualified namespace>",
  new DefaultAzureCredential()
);
const serializer = new AvroSerializer(client, {
  groupName: "<group>",
  messageAdapter: createEventDataAdapter(),
});

// Example Avro schema
const schema = JSON.stringify({
  type: "record",
  name: "Rating",
  namespace: "my.example",
  fields: [{ name: "score", type: "int" }],
});

// Example value that matches the Avro schema above
const value = { score: 42 };

// Serialize value to a message
const message = await serializer.serialize(value, schema);

// Deserialize a message to value
const deserializedValue = await serializer.deserialize(message);

故障排除

Avro 序列化程序会根据需要与 架构注册表 服务通信以注册或查询架构,并且这些服务调用可能会引发 RestError。 此外,当序列化或反序列化失败时,将引发 类型的 Error 错误。 属性 cause 将包含从 Avro 实现库引发的基础错误。

日志记录

启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL 环境变量设置为 info。 或者,可以在运行时通过调用 @azure/logger 中的 setLogLevel 来启用日志记录:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

后续步骤

有关如何使用此库的详细示例,请查看 示例 目录。

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com

提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。

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

曝光数