第 2 章 Apicurio Registry 内容规则
本章介绍了用于管理 Apicurio Registry 内容的可选规则,并提供了有关可用规则配置的详情:
2.1. 使用规则管理 Apicurio Registry 内容 复制链接链接已复制到粘贴板!
要管理添加到 Apicurio Registry 中的工件内容的演进,您可以配置可选规则。所有配置的全局规则、特定于组的规则或工件规则都必须通过,然后才能将新工件版本添加到 Apicurio Registry。配置的特定于工件的规则会覆盖任何配置的特定于组的规则,这些规则又覆盖任何配置的全局规则。
这些规则的目的是防止将无效内容添加到 Apicurio Registry 中,并控制工件的演进(例如,检查新工件版本与之前的版本的兼容性)。例如,内容可能会因为以下原因无效:
-
给定工件类型的无效语法,如
AVRO或PROTOBUF。 - 有效的语法,但语义违反了规范。
- 不兼容性,当新内容包含与当前工件版本相关的破坏更改时。
- 工件引用完整性,例如副本或不存在的工件引用映射。
您可以使用 Apicurio Registry web 控制台、REST API 命令或使用其中一个 SDK 来启用可选内容规则。
2.1.1. 应用规则时 复制链接链接已复制到粘贴板!
只有在内容添加到 Apicurio Registry 时,才会应用规则。这包括以下 REST 操作:
- 添加工件
- 添加工件版本
如果违反了规则,Apicurio Registry 会返回 HTTP 错误。响应正文包括违反的规则,以及显示出错的消息。
2.1.2. 规则的优先级顺序 复制链接链接已复制到粘贴板!
特定于工件和全局规则的优先级顺序如下:
- 特定于工件的规则具有最高的优先级
- 特定于组的规则具有下一个最高优先级
- 全局规则具有最低优先级
如果在更高级别上配置一条规则(例如在全局级别上),但您希望在较低级别上禁用该规则,您必须在较低级别上配置相同的规则(因此,它会覆盖它),并将其 rules 值设置为 NONE。
2.1.3. 规则的工作方式 复制链接链接已复制到粘贴板!
每个规则都有一个名称和配置信息。Apicurio Registry 维护每个工件、每个组以及全局规则列表的规则列表。列表中的每一规则均由规则实施的名称和配置组成。
执行规则时,会提供当前工件版本的内容(如果存在)以及正在添加的工件的新版本。规则实现会返回或失败,具体取决于工件是否通过规则。如果没有,Apicurio Registry 会报告 HTTP 错误响应的原因。有些规则可能无法使用之前版本的内容。例如,兼容性规则使用以前的版本,但语法或语义有效规则不会。
2.1.4. 内容规则配置 复制链接链接已复制到粘贴板!
管理员可以配置 Apicurio Registry 全局规则、特定于组的规则和特定于工件的规则。开发人员只能配置特定于组的规则,以及特定于工件的规则。
Apicurio Registry 应用为特定工件配置的规则。如果在该级别上没有配置任何规则,则 Apicurio Registry 会应用特定于组的规则。如果在组级别没有配置任何规则,则 Apicurio Registry 会应用全局配置的规则。如果没有配置全局规则,则不应用任何规则。
配置组和工件特定规则
您可以使用 Apicurio Registry web 控制台或 REST API 配置特定于组的规则和特定于工件的规则。详情请查看以下内容:
配置全局规则
管理员可以以多种方式配置全局规则:
-
在 REST API 中使用
admin/rules操作 - 使用 Apicurio Registry web 控制台
- 使用 Apicurio Registry 应用程序属性设置默认全局规则
配置默认的全局规则
管理员可以在应用程序级别配置 Apicurio Registry,以启用或禁用全局规则。您可以使用以下 application 属性格式在安装时配置默认的全局规则,而无需安装后配置:
apicurio.rules.global.<ruleName>
apicurio.rules.global.<ruleName>
目前支持以下规则名称:
-
兼容性 -
有效期 -
完整性
application 属性的值必须是有效的配置选项,它特定于所配置的规则。
您可以将这些应用程序属性配置为 Java 系统属性,或者将其包含在 Quarkus application.properties 文件中。如需了解更多详细信息,请参阅 Quarkus 文档。