你当前正在访问 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 参考文档 | 产品文档 | 样品
入门
先决条件
- Java 开发工具包 (JDK) 8 或更高版本。
- Azure 订阅
- 事件中心命名空间
包括包
<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 架构注册表服务交互,需要通过 创建 类的SchemaRegistryAsyncClient
SchemaRegistryClientBuilder
实例。 需要架构注册表 终结点。
可以使用 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
。 利用 SchemaRegistryAvroSerializer
, SchemaRegistryAsyncClient
使用包含架构信息(如架构 ID)的线路格式构造消息。
此序列化程序需要 Apache Avro 库。 此序列化程序接受的有效负载类型包括 GenericRecord 和 SpecificRecord。
示例
序列化
将强类型对象序列化为架构注册表兼容的 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 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。