The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Apicurio注册表的开发服务

如果存在模式注册表的扩展,如 quarkus-apicurio-registry-avroquarkus-confluent-registry-avro ,则Apicurio注册表的开发服务会在开发模式下和运行测试时自动启动一个Apicurio注册表实例。此外,SmallRye 响应式消息中的所有Kafka通道都被自动配置为使用该注册表。这个自动配置只适用于Apicurio Registry serde库和Confluent Schema Registry 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

启用/禁用Apicurio注册表的开发服务

Apicurio注册表的开发服务是自动启用的,除非:

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

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

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

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

Apicurio注册表的开发服务依赖于Docker来启动注册表。如果你的环境不支持Docker,你需要手动启动注册表,或者使用一个已运行的注册表。在这种情况下,你可以使用一个属性为SmallRye响应式消息中的所有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注册表的开发服务为你在 dev 模式下运行的多个Quarkus应用程序实现了一种 service discovery 机制,以共享单个注册表。

Apicurio注册表的开发服务使用 quarkus-dev-service-apicurio-registry 标签来启动容器,该标签用于识别容器。

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

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

设置端口

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

注意,SmallRye响应式消息中的Kafka通道会自动使用所选的端口进行配置。

配置镜像

Apicurio注册表的开发服务使用 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

Related content