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

适用于 Java 的 Azure 架构注册表客户端库 - 版本 1.3.10

Azure 架构注册表是由 Azure 事件中心 托管的架构存储库服务,提供架构存储、版本控制和管理。 应用程序利用注册表来减小有效负载大小,同时使用架构标识符而不是完整架构来描述有效负载结构。

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

入门

先决条件

添加包

包括 BOM 文件

请将 azure-sdk-bom 包含在项目中,以依赖于库的正式发布 (GA) 版本。 在以下代码段中,将 {bom_version_to_target} 占位符替换为版本号。 若要详细了解 BOM,请参阅 AZURE SDK BOM 自述文件

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然后在 dependencies 节中包含直接依赖项,不带版本标记,如下所示。

<dependencies>
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-data-schemaregistry</artifactId>
    </dependency>
</dependencies>

包括直接依赖项

如果要依赖于 BOM 中不存在的特定版本的库,请将直接依赖项添加到项目中,如下所示。

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

验证客户端

若要与 Azure 架构注册表服务交互,需要通过 创建 类的SchemaRegistryClientSchemaRegistryClientBuilder实例。 需要一个 终结点 和一个 API 密钥 来实例化客户端对象。

使用 Azure Active Directory 凭据创建 SchemaRegistryClient

可以使用 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 应用程序 ,并授予对架构注册表服务 的访问权限

将 AAD 应用程序的客户端 ID、租户 ID 和客户端密码的值设置为环境变量:AZURE_CLIENT_ID、AZURE_TENANT_ID、AZURE_CLIENT_SECRET。

异步客户端
DefaultAzureCredential azureCredential = new DefaultAzureCredentialBuilder()
    .build();
SchemaRegistryAsyncClient client = new SchemaRegistryClientBuilder()
    .fullyQualifiedNamespace("https://<your-schema-registry-endpoint>.servicebus.windows.net")
    .credential(azureCredential)
    .buildAsyncClient();
同步客户端
DefaultAzureCredential azureCredential = new DefaultAzureCredentialBuilder()
    .build();
SchemaRegistryClient client = new SchemaRegistryClientBuilder()
    .fullyQualifiedNamespace("https://<your-schema-registry-endpoint>.servicebus.windows.net")
    .credential(azureCredential)
    .buildClient();

关键概念

架构

架构有 6 个组件:

  • 组名称:架构注册表实例中架构组的名称。
  • 架构名称:架构的名称。
  • 架构 ID:架构注册表实例为架构分配的 ID。
  • 序列化类型:用于架构序列化的格式。 例如,Avro。
  • 架构内容:架构的字符串表示形式。
  • 架构版本:分配给架构注册表实例中架构的版本。

这些组件扮演不同的角色。 一些用作操作的输入,一些用作输出。 目前, SchemaProperties 仅公开那些是 SchemaRegistry 操作中使用的潜在输出的属性。 这些公开的属性是 ContentId

示例

注册架构

注册要存储在 Azure 架构注册表中的架构。

String schema = "{\"type\":\"enum\",\"name\":\"TEST\",\"symbols\":[\"UNIT\",\"INTEGRATION\"]}";
SchemaProperties properties = client.registerSchema("{schema-group}", "{schema-name}", schema,
    SchemaFormat.AVRO);

System.out.printf("Schema id: %s, schema format: %s%n", properties.getId(), properties.getFormat());

检索架构的属性

从 Azure 架构注册表中检索以前注册的架构的属性。

SchemaRegistrySchema schema = client.getSchema("{schema-id}");

System.out.printf("Schema id: %s, schema format: %s%n", schema.getProperties().getId(),
    schema.getProperties().getFormat());
System.out.println("Schema contents: " + schema.getDefinition());

检索架构

从 Azure 架构注册表中检索以前注册的架构的内容和属性。

String schemaContent = "{\n"
    + "    \"type\" : \"record\",  \n"
    + "    \"namespace\" : \"SampleSchemaNameSpace\", \n"
    + "    \"name\" : \"Person\", \n"
    + "    \"fields\" : [\n"
    + "        { \n"
    + "            \"name\" : \"FirstName\" , \"type\" : \"string\" \n"
    + "        }, \n"
    + "        { \n"
    + "            \"name\" : \"LastName\", \"type\" : \"string\" \n"
    + "        }\n"
    + "    ]\n"
    + "}";
SchemaProperties properties = client.getSchemaProperties("{schema-group}", "{schema-name}",
    schemaContent, SchemaFormat.AVRO);

System.out.println("Schema id: " + properties.getId());
System.out.println("Format: " + properties.getFormat());
System.out.println("Version: " + properties.getVersion());

疑难解答

启用日志记录

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

后续步骤

此处可以找到更多示例。

贡献

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

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

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

曝光数