Dev Services for Apicurio Registry

如果存在诸如 quarkus-apicurio-registry-avroquarkus-confluent-registry-avro 的架构注册表扩展,则适用于 Apicurio 注册表的开发服务将在开发模式下自动启动 Apicurio 注册表实例,并在运行测试时自动启动该实例。同时,SmallRye 响应式消息传递中的所有 Kafka 通道都自动配置为使用此注册表。自动配置仅适用于 Apicurio 注册表 serde 库和 Confluent 架构注册表 serde 库中的序列化程序和反序列化程序,因为已设置其属性:

# for Apicurio Registry serde
mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/apis/registry/v2
# for Confluent Schema Registry serde
mp.messaging.connector.smallrye-kafka.schema.registry.url=http://localhost:8081/apis/ccompat/v6

Enabling / Disabling Dev Services for Apicurio Registry

除非满足以下条件,否则 Apicurio 注册表的开发服务会自动启用:

  • quarkus.apicurio-registry.devservices.enabled 设置为 false

  • mp.messaging.connector.smallrye-kafka.apicurio.registry.url is configured

  • mp.messaging.connector.smallrye-kafka.schema.registry.url is configured

  • 所有响应式消息传递 Kafka 通道已将 apicurio.registry.url 属性或 schema.registry.url 属性都设置

Apicurio 注册表的开发服务依靠 Docker 来启动注册表。如果您的环境不支持 Docker,则需要手动启动注册表或使用已在运行的注册表。在这种情况下,您可以使用单个属性为 SmallRye 响应式消息传递中的所有 Kafka 通道配置注册表 URL。Apicurio 注册表 serde 为:

mp.messaging.connector.smallrye-kafka.apicurio.registry.url=... your Apicurio Registry URL...

对于 Confluent 架构注册表 serde,即:

mp.messaging.connector.smallrye-kafka.schema.registry.url=... your Confluent Schema Registry URL...

Shared registry

大多数情况下,你需要在应用程序之间共享注册表。Dev Service for Apicurio Registry 为在 dev 模式下运行的多个 Quarkus 应用程序实现了一个 service discovery 机制,以便共享单个注册表。

Dev Services for Apicurio Registry 使用 quarkus-dev-service-apicurio-registry 标签启动该容器,该标签用于标识容器。

如果您需要多个(共享)注册表,您可以配置 quarkus.apicurio-registry.devservices.service-name 属性并指示注册表名称。它会查找具有相同值的一个容器,或在找不到任何容器时启动一个新的容器。默认服务名称是 apicurio-registry

在开发模式下,共享功能默认启用,但在测试模式下禁用。您可以使用 quarkus.apicurio-registry.devservices.shared=false 禁用共享。

Setting the port

默认情况下,针对 Apicurio 注册表的 Dev 服务会选择一个随机端口并配置该应用程序。您可以通过配置 quarkus.apicurio-registry.devservices.port 属性来设置端口。

请注意,SmallRye Reactive 消息中的 Kafka 频道会自动使用所选端口进行配置。

Configuring the image

针对 Apicurio 注册表的 Dev 服务使用 apicurio/apicurio-registry-mem 映像。您可以从 [role="bare"][role="bare"]https://hub.docker.com/r/apicurio/apicurio-registry-mem 中选择任何 2.x 版本:

quarkus.apicurio-registry.devservices.image-name=apicurio/apicurio-registry-mem:latest-snapshot