搜索

第 2 章 Apicurio Registry 内容规则

download PDF

本章介绍了用于管理 Apicurio Registry 内容的可选规则,并提供了有关可用规则配置的详情:

2.1. 使用规则监管 Apicurio Registry 内容

要管理添加到 Apicurio Registry 的工件内容的演进,您可以配置可选规则。所有配置的全局规则或特定于工件的规则都必须通过,然后才能将新的工件版本上传到 Apicurio Registry。配置的特定于工件的规则会覆盖任何配置的全局规则。

这些规则的目的是防止将无效的内容添加到 Apicurio Registry 中。例如,内容可能会因为以下原因无效:

  • 给定工件类型(例如 AVROPROTOBUF )的无效语法。
  • 有效的语法,但语义违反了规格。
  • 不兼容,当新内容包含与当前工件版本相关的更改时。
  • 工件参考完整性,例如:重复或不存在的工件引用映射。

您可以使用 Apicurio Registry web 控制台、REST API 命令或 Java 客户端应用程序启用可选内容规则。

2.1.1. 应用规则时

只有在内容添加到 Apicurio Registry 时,才会应用规则。这包括以下 REST 操作:

  • 添加工件
  • 更新工件
  • 添加工件版本

如果违反了规则,Apicurio Registry 会返回 HTTP 错误。响应正文包含违反的规则以及显示错误的消息。

2.1.2. 规则优先级顺序

特定于工件和全局规则的优先顺序如下:

  • 如果您启用特定于工件的规则,并且启用了等同的全局规则,工件规则会覆盖全局规则。
  • 如果您禁用特定于工件的规则,并且启用了等同的全局规则,则应用全局规则。
  • 如果您禁用特定于工件的规则,且禁用了等同的全局规则,则会为所有工件禁用该规则。
  • 如果您在工件级别将规则值设置为 NONE,您可以覆盖启用的全局规则。在这种情况下,工件规则值为 NONE 优先于这个工件,但启用的全局规则将继续应用到在工件级别禁用规则的任何其他工件。

2.1.3. 规则的工作方式

每个规则都有一个名称和配置信息。Apicurio Registry 维护每个工件和全局规则列表的规则列表。列表中的每一规则都由规则实施的名称和配置组成。

提供一个规则,其中包含工件当前版本的内容(如果存在),以及正在添加的工件的新版本。根据工件是否通过规则,规则实现会返回 true 或 false。如果没有,Apicurio Registry 会报告 HTTP 错误响应中原因。有些规则可能没有使用之前版本的内容。例如,兼容性规则使用之前的版本,但语法或语义有效规则不使用。

其他资源

如需了解更多详细信息,请参阅 第 10 章 Apicurio Registry 内容规则引用

2.1.4. 内容规则配置

管理员可以配置 Apicurio Registry 全局规则和特定于工件的规则。开发人员只能配置特定于工件的规则。

Apicurio Registry 应用为特定工件配置的规则。如果在该级别上没有配置任何规则,则 Apicurio Registry 将应用全局配置的规则。如果没有配置全局规则,则不会应用任何规则。

配置工件规则

您可以使用 Apicurio Registry web 控制台或 REST API 配置工件规则。详情请查看以下内容:

配置全局规则

管理员可以以多种方式配置全局规则:

  • 在 REST API 中使用 admin/rules 操作
  • 使用 Apicurio Registry web 控制台
  • 使用 Apicurio Registry 应用程序属性设置默认全局规则

配置默认的全局规则

管理员可以在应用程序级别上配置 Apicurio Registry,以启用或禁用全局规则。您可以在安装时配置默认全局规则,而无需使用以下应用程序属性格式进行安装后配置:

registry.rules.global.<ruleName>

目前支持以下规则名称:

  • 兼容性
  • 有效期
  • 完整性

application 属性的值必须是特定于所配置规则的有效配置选项。

注意

您可以将这些应用程序属性配置为 Java 系统属性,或者在 Quarkus application.properties 文件中包括它们。如需了解更多详细信息,请参阅 Quarkus 文档

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.