Apicurio注册表的开发服务
如果存在模式注册表的扩展,如 quarkus-apicurio-registry-avro
或 quarkus-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