编辑此页面

Apicurio Registry 的 Dev Services

如果存在模式注册表扩展,例如 quarkus-apicurio-registry-avroquarkus-confluent-registry-avro,则 Apicurio Registry 的开发服务会在开发模式和运行测试时自动启动 Apicurio Registry 实例。此外,SmallRye Reactive Messaging 中的所有 Kafka 通道都会自动配置为使用此注册表。此自动配置仅适用于 Apicurio Registry serde 库和 Confluent Schema Registry serde 库的序列化器和反序列化器,因为它们的属性已设置。

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

启用/禁用 Apicurio Registry 的开发服务

Apicurio Registry 的开发服务默认启用,除非

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

  • 配置了 mp.messaging.connector.smallrye-kafka.apicurio.registry.url

  • 配置了 mp.messaging.connector.smallrye-kafka.schema.registry.url

  • 所有 Reactive Messaging Kafka 通道都设置了 apicurio.registry.url 属性或 schema.registry.url 属性

Apicurio Registry 的开发服务依赖 Docker 来启动注册表。如果您的环境不支持 Docker,您将需要手动启动注册表,或者使用已在运行的注册表。在这种情况下,您可以使用一个属性为 SmallRye Reactive Messaging 中的所有 Kafka 通道配置注册表 URL。对于 Apicurio Registry serde,它是

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

对于 Confluent Schema Registry serde,它是

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

共享注册表

大多数情况下,您需要在应用程序之间共享注册表。Apicurio Registry 的开发服务为在开发模式下运行的多个 Quarkus 应用程序实现了服务发现机制,以共享单个注册表。

Apicurio Registry 的开发服务会启动带有 quarkus-dev-service-apicurio-registry 标签的容器,该标签用于识别容器。

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

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

设置端口

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

请注意,SmallRye Reactive Messaging 中的 Kafka 通道会自动配置所选的端口。

配置镜像

Apicurio Registry 的开发服务使用 apicurio/apicurio-registry-mem 镜像。您可以从 https://hub.docker.com/r/apicurio/apicurio-registry-mem 选择任何 2.x 版本。

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

Compose

Apicurio 开发服务支持 Compose 开发服务。它依赖于 compose-devservices.yml,例如

name: <application name>
services:
  apicurio:
    image: apicurio/apicurio-registry-mem:2.4.2.Final
    ports:
      - "8080"

相关内容