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

适用于 Java 的 Azure 架构注册表 Apache Avro Serializer 客户端库 - 版本 1.1.10

Azure 架构注册表 Apache Avro 是 Avro 数据格式的序列化程序和反序列化程序库,与托管在 Azure 事件中心 中的 Azure 架构注册表集成,提供架构存储、版本控制和管理。 此包提供 Avro 序列化程序,能够序列化和反序列化包含架构注册表架构标识符和 Avro 编码数据的有效负载。 此库使用 Apache Avro 实现进行 Avro 序列化和反序列化。

源代码 | 包 (Maven) | API 参考文档 | 产品文档 | 样品

入门

先决条件

包括包

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-data-schemaregistry-apacheavro</artifactId>
  <version>1.1.10</version>
</dependency>

创建 SchemaRegistryApacheAvroSerializer 实例

实例SchemaRegistryApacheAvroSerializer是main类,提供用于序列化和反序列化 avro 数据格式的 API。 avro 架构通过 SchemaRegistryAsyncClient存储和检索架构注册表服务。 因此,在创建序列化程序之前,应创建客户端。

使用 Azure Active Directory 凭据创建SchemaRegistryAsyncClient

若要与 Azure 架构注册表服务交互,需要通过 创建 类的SchemaRegistryAsyncClientSchemaRegistryClientBuilder实例。 需要架构注册表 终结点

可以使用 Azure 标识库对 Azure Active Directory 进行身份验证。 请注意,区域终结点不支持 AAD 身份验证。 为资源创建自定义子域,以使用此类身份验证。

若要使用如下所示的 DefaultAzureCredential 提供程序或 Azure SDK 提供的其他凭据提供程序,请包含包 azure-identity

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.10.1</version>
</dependency>

还需要 注册新的 AAD 应用程序 ,并 授予对 架构注册表服务的访问权限。

TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();

// {schema-registry-endpoint} is the fully qualified namespace of the Event Hubs instance. It is usually
// of the form "{your-namespace}.servicebus.windows.net"
SchemaRegistryAsyncClient schemaRegistryAsyncClient = new SchemaRegistryClientBuilder()
    .fullyQualifiedNamespace("{your-event-hubs-namespace}.servicebus.windows.net")
    .credential(tokenCredential)
    .buildAsyncClient();

通过生成器创建SchemaRegistryAvroSerializer

SchemaRegistryApacheAvroSerializer serializer = new SchemaRegistryApacheAvroSerializerBuilder()
    .schemaRegistryClient(schemaRegistryAsyncClient)
    .schemaGroup("{schema-group}")
    .buildSerializer();

关键概念

此库提供序列化程序 SchemaRegistryApacheAvroSerializer。 利用 SchemaRegistryAvroSerializerSchemaRegistryAsyncClient 使用包含架构信息(如架构 ID)的线路格式构造消息。

此序列化程序需要 Apache Avro 库。 此序列化程序接受的有效负载类型包括 GenericRecordSpecificRecord

示例

序列化

将强类型对象序列化为架构注册表兼容的 avro 有效负载。

PlayingCard playingCard = new PlayingCard();
playingCard.setPlayingCardSuit(PlayingCardSuit.SPADES);
playingCard.setIsFaceCard(false);
playingCard.setCardValue(5);

MessageContent message = serializer.serialize(playingCard,
    TypeReference.createInstance(MessageContent.class));

avro 类型 PlayingCard 在示例包 com.azure.data.schemaregistry.avro.generatedtestsources中可用。

反序列化

将架构注册表兼容的 avro 有效负载反序列化为强类型对象。

SchemaRegistryApacheAvroSerializer serializer = createAvroSchemaRegistrySerializer();
MessageContent message = getSchemaRegistryAvroMessage();
PlayingCard playingCard = serializer.deserialize(message, TypeReference.createInstance(PlayingCard.class));

疑难解答

启用日志记录

适用于 Java 的 Azure SDK 提供一致的日志记录故事,可帮助排查应用程序错误并加快解决。 生成的日志会在到达终端状态之前捕获应用程序的流,以帮助查找根本问题。 有关启用 日志记录 的指南,请查看日志记录 Wiki。

后续步骤

此处可以找到更多示例。

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。

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

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

曝光数