第 2 章 Service Registry 内容规则
本章介绍了用于管理 registry 内容的可选规则,并提供有关可用规则配置的详情:
2.1. 使用规则管理 registry 内容
要监管 registry 内容的演进,您可以为添加到 registry 中的工件内容配置可选的规则。所有配置的全局规则或工件规则都必须传递,然后才能将新的工件版本上传到 registry。配置的工件规则覆盖任何配置的全局规则。
这些规则的目标是防止将无效的内容添加到 registry 中。例如,因为以下原因,内容可能无效:
-
给定工件类型的语法无效(例如,
AVRO
或PROTOBUF
) - 有效语法,但语义违反了规格
- 不兼容时,当新内容包含与当前工件版本相关的破坏更改时
您可以使用 Service Registry Web 控制台、REST API 命令或 Java 客户端应用程序启用可选内容规则。
2.1.1. 应用规则时
只有在将内容添加到 registry 时,才会应用规则。这包括以下 REST 操作:
- 添加工件
- 更新工件
- 添加工件版本
如果违反规则,Service Registry 会返回 HTTP 错误。响应正文包含违反的规则,以及显示错误情况的消息。
2.1.2. 规则优先级
您可以在全局级别和工件级别配置 Service Registry 内容规则。优先级顺序如下:
- 如果您启用工件规则和对应的全局规则,则工件规则会覆盖全局规则。
- 如果您禁用工件规则,并且启用相同的全局规则,则应用全局规则。
- 如果您在工件级别和全局级别上禁用规则,您可以禁用所有工件的规则。
-
如果您在工件级别将规则值设置为
NONE
,则会覆盖启用的全局规则。在本例中,工件规则值NONE
优先于这个工件,但启用的全局规则将继续应用到工件级别禁用该规则的任何其他工件。
2.1.3. 规则如何工作
每个规则都有一个名称和配置信息。registry 维护每个工件和全局规则列表的规则列表。列表中的每个规则都包含规则实施的名称和配置。
提供了规则,其中包含当前版本的工件(如果存在)和要添加的构件的新版本。规则实现返回为 true 或 false,具体取决于工件是否通过该规则。如果没有,registry 会报告 HTTP 错误响应中原因。有些规则可能不使用内容的先前版本。例如,兼容性规则使用之前的版本,但语法或语义有效规则并不。
其他资源
如需了解更多详细信息,请参阅 第 9 章 Service Registry 工件引用。
2.1.4. 内容规则配置
您可以单独为每个工件以及全局配置规则。Service Registry 应用为特定工件配置的规则。如果没有在该级别上配置任何规则,Service Registry 将应用全局配置的规则。如果没有配置全局规则,则不会应用任何规则。
配置工件规则
您可以使用 Service Registry Web 控制台或 REST API 配置工件规则。详情请查看以下内容:
配置全局规则
您可以使用以下方法配置全局规则:
-
在 REST API 中使用
/rules
操作 - 使用 Service Registry Web 控制台
- 使用 Service Registry 应用程序属性设置默认全局规则
配置默认全局规则
您可以在应用程序级别配置 Service Registry,以启用或禁用全局规则。您可以在安装时配置默认全局规则,而无需使用以下应用程序属性格式进行安装后配置:
registry.rules.global.<ruleName>
当前支持以下规则名称:
-
compatibility
-
validity
application 属性的值必须是有效的配置选项,它特定于所配置的规则。
您可以将这些应用程序属性配置为 Java 系统属性,或者将它们包含在 Quarkus application.properties
文件中。如需了解更多详细信息,请参阅 Quarkus 文档。