搜索

9.7. 将架构注册到服务 registry

download PDF

以适当格式定义了架构后,如 Apache Avro,您可以将架构添加到服务注册表。

您可以通过以下方法添加 schema:

  • Service Registry Web 控制台
  • 使用 Service Registry API 的 curl 命令
  • Service Registry 提供的 Maven 插件
  • 添加到客户端代码中的模式配置

在注册了架构前,客户端应用程序无法使用 Service Registry。

Service Registry Web 控制台

安装 Service Registry 后,您可以从 ui 端点连接到 web 控制台:

+http+://MY-REGISTRY-URL/ui

在控制台中,您可以添加、查看和配置模式。您还可以创建防止将无效内容添加到 registry 的规则。

有关使用 Service Registry Web 控制台的更多信息,请参阅 Service Registry 文档

curl 示例

curl -X POST -H "Content-type: application/json; artifactType=AVRO" \
  -H "X-Registry-ArtifactId: prices-value" \
  --data '{ 1
      "type":"record",
      "name":"price",
      "namespace":"com.redhat",
      "fields":[{"name":"symbol","type":"string"},
      {"name":"price","type":"string"}]
    }'
  https://my-cluster-service-registry-myproject.example.com/api/artifacts -s 2
1
Avro 模式
2
公开 Service Registry 的 OpenShift 路由名称

插件示例

<plugin>
<groupId>io.apicurio</groupId>
<artifactId>apicurio-registry-maven-plugin</artifactId>
<version>${registry.version}</version>
<executions>
  <execution>
    <phase>generate-sources</phase>
    <goals>
      <goal>register</goal>
    </goals>
    <configuration>
      <registryUrl>https://my-cluster-service-registry-myproject.example.com/api</registryUrl>
      <artifactType>AVRO</artifactType>
      <artifacts>
        <schema1>${project.basedir}/schemas/schema1.avsc</schema1>
      </artifacts>
    </configuration>
  </execution>
</executions>
</plugin>

通过(producer)客户端示例进行配置

String registryUrl_node1 = PropertiesUtil.property(clientProperties, "registry.url.node1", 1
    "https://my-cluster-service-registry-myproject.example.com/api");
try (RegistryService service = RegistryClient.create(registryUrl_node1)) {
    String artifactId = ApplicationImpl.INPUT_TOPIC + "-value";
    try {
        service.getArtifactMetaData(artifactId); 2
    } catch (WebApplicationException e) {
        CompletionStage <ArtifactMetaData> csa = service.createArtifact(
            ArtifactType.AVRO,
            artifactId,
            new ByteArrayInputStream(LogInput.SCHEMA$.toString().getBytes())
        );
        csa.toCompletableFuture().get();
    }
}
1
属性已注册。您可以针对多个节点注册属性。
2
检查以根据工件 ID 检查架构是否已存在。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.