Dev Services Overview
What Are Dev Services?
Quarkus 支持在开发和测试模式下自动配置未配置的服务。我们将此功能称为开发服务。如果您包括一个扩展并且未对其配置,那么 Quarkus 将自动启动相关服务(通常在幕后使用 Testcontainers)并将应用链接起来以使用此服务。
有关如何开始编写具有持久性和开发功能的应用程序的分步指南,请参阅 Your Second Quarkus Application。
Using Dev Services
开发服务被设计为无摩擦服务,因此只要您未配置连接到外部服务的连接,它们将在您包含支持开发服务的扩展时自动启动。
为了使用大多数开发服务,您需要一个有效的容器环境(支持远程环境)。如果您没有安装容器环境(例如 Docker 或 Podman),您将需要正常配置服务。 |
开发服务的默认启动超时为 60 秒,如果不够,您可使用 quarkus.devservices.timeout
属性增加该超时。
要配置生产服务,但在开发和测试模式下继续使用开发服务,请使用 configuration profiles。
例如,
# configure your datasource
%prod.quarkus.datasource.db-kind = postgresql
%prod.quarkus.datasource.username = prod-admin
%prod.quarkus.datasource.password = super-secret
%prod.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/mydatabase
Disabling Dev Services
所有这些功能都是 Quarkus deployment
模块的一部分,所以不会以任何方式影响生产应用程序。如果您想禁用所有开发服务,则可以使用 quarkus.devservices.enabled=false
配置属性,但在大多数情况下这是没有必要的,因为简单地配置服务就会导致开发服务自动禁用。
Platform Dev Services
本节列出了 Quarkus 平台中提供的所有开发服务。
AMQP
当 quarkus-messaging-amqp
扩展出现在您的应用程序中,且代理地址尚未被明确配置时,AMQP 开发服务将被启用。更多信息可在 AMQP Dev Services Guide 中找到。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-messaging-amqp_quarkus.amqp.devservices.adoc[]
Apicurio Registry
如果扩展`quarkus-apicurio-registry-avro`存在于您的应用程序中,并且尚未明确配置其地址时,Apicurio Dev Service 将被启用。有关更多信息,请参阅Apicurio Registry Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-schema-registry-devservice_quarkus.apicurio-registry.devservices.adoc[]
Databases
如果响应式或 JDBC 数据源扩展存在于应用程序中,并且尚未配置数据库 URL 时,数据库 Dev Services 将被启用。有关更多信息,请参阅Databases Dev Services Guide。
Quarkus 为其支持的所有数据库提供 Dev Services。除了在进程内运行的 H2 和 Derby 之外,其中大部分都在容器中运行。Dev Services 支持 JDBC 和响应式驱动程序。
使用 Testcontainers 启动在容器中运行的那些关系型数据库,并支持“可重用实例”。这意味着如果您在 Testcontainers 配置文件中添加了属性 testcontainers.reuse.enable=true
、在用户主目录中添加名为 .testcontainers.properties
的属性文件,则每次运行后,数据库不会被强制停止,并且可以被重用。
注意:如果您选择此特性,Quarkus 不会在每次运行之间重置数据库的状态,除非您明确进行配置。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-datasource_quarkus.datasource.devservices.adoc[]
Kafka
如果扩展`quarkus-kafka-client`存在于您的应用程序中,并且尚未明确配置代理地址时,Kafka Dev Service 将被启用。有关更多信息,请参阅Kafka Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-kafka-client_quarkus.kafka.devservices.adoc[]
Keycloak
如果扩展`quarkus-oidc`存在于您的应用程序中,并且尚未明确配置服务器地址时,Keycloak Dev Service 将被启用。有关更多信息,请参阅OIDC Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-oidc_quarkus.keycloak.devservices.adoc[]
Kubernetes
如果扩展`kubernetes-client`存在于您的应用程序中,并且尚未明确配置 API 服务器地址时,Kubernetes Dev Service 将被启用。有关更多信息,请参阅Kubernetes Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-kubernetes-client_quarkus.kubernetes-client.devservices.adoc[]
MongoDB
如果扩展`quarkus-mongodb-client`存在于您的应用程序中,并且尚未明确配置服务器地址时,MongoDB Dev Service 将被启用。有关更多信息,请参阅MongoDB Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-mongodb-client_quarkus.mongodb.devservices.adoc[]
RabbitMQ
如果扩展`quarkus-messaging-rabbitmq`存在于您的应用程序中,并且尚未明确配置代理地址时,RabbitMQ Dev Service 将被启用。有关更多信息,请参阅RabbitMQ Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-messaging-rabbitmq_quarkus.rabbitmq.devservices.adoc[]
Pulsar
如果扩展`quarkus-messaging-pulsar`存在于您的应用程序中,并且尚未明确配置代理地址时,Pulsar Dev Service 将被启用。有关更多信息,请参阅Pulsar Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-messaging-pulsar_quarkus.pulsar.devservices.adoc[]
Redis
Redis Dev 服务将在应用程序中出现 quarkus-redis-client
扩展时启用,并且尚未明确配置服务器地址。有关详细信息,请参阅 Redis Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-redis-client_quarkus.redis.devservices.adoc[]
Vault
Vault Dev 服务将在应用程序中出现 quarkus-vault
扩展时启用,并且尚未明确配置服务器地址。有关详细信息,请参阅 Vault Guide。
Infinispan
Infinispan Dev 服务将在应用程序中出现 quarkus-infinispan-client
扩展时启用,并且尚未明确配置服务器地址。有关详细信息,请参阅 Infinispan Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-infinispan-client_quarkus.infinispan-client.devservices.adoc[]
Elasticsearch
Elasticsearch Dev 服务将在应用程序中出现基于 Elasticsearch 的扩展之一(Elasticsearch 客户端或 Hibernate Search ORM Elasticsearch)时启用,并且尚未明确配置服务器地址。有关详细信息,请参阅 Elasticsearch Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-elasticsearch-rest-client_quarkus.elasticsearch.devservices.adoc[]
Observability
Observability Dev 服务将在应用程序中出现 quarkus-observability-devservices
扩展时启用,并且类路径上至少有一个开发资源。有关详细信息,请参阅 Observability Dev Services Guide。
Unresolved include directive in modules/ROOT/pages/dev-services.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-observability-devservices.adoc[]
Dev Services beyond the Quarkus Platform
Quarkiverse 中许多不在 Quarkus Platform 中的扩展还提供 Dev 服务。
以下是一些重点。
Neo4j
Neo4j Dev 服务将在应用程序中出现 quarkus-neo4j
扩展时启用,并且尚未明确配置服务器地址。有关详细信息,请参阅 Neo4j Guide。
WireMock
WireMock 扩展将 WireMock 作为 Dev 服务启动。它是一个以测试为重点的扩展,旨在仅在开发和测试模式下运行。有关详细信息,请参阅 WireMock Guide。
Microcks
Microcks Quarkus 扩展包含 Microcks Dev 服务。Dev 服务管理依赖项的模拟和对 API 端点的契约测试。有关详细信息,请参阅扩展 README.md。