Apicurio Registry 的 Dev Services
如果存在模式注册表扩展,例如 quarkus-apicurio-registry-avro
或 quarkus-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"