1.3. 数据源集成
1.3.1. 数据源健康检查
如果您使用 quarkus-smallrye-health
扩展,quarkus-agroal
和 reactive 客户端扩展会自动添加就绪度健康检查来验证数据源。
当您默认访问应用程序的健康状况就绪端点 /q/health/ready
时,您会收到数据源验证状态的信息。如果您有多个数据源,则会检查所有数据源验证失败,如果发生单一数据源验证失败,则状态将变为 DOWN
。
可以使用 quarkus.datasource.health.enabled
属性禁用此行为。
要只从健康检查中排除特定的数据源,请使用:
quarkus.datasource."datasource-name".health-exclude=true
1.3.2. 数据源指标
如果您使用 quarkus-micrometer
或 quarkus-smallrye-metrics
扩展,quarkus-agroal
可以为指标 registry 提供一些与数据源相关的指标。这可以通过将 quarkus.datasource.metrics.enabled
属性设置为 true
来激活。
要使公开的指标包含任何实际值,则必须通过 Agroal 机制在内部启用指标集合。默认情况下,当指标扩展存在时,为所有数据源启用此指标集合机制,并且启用了 Agroal 扩展的指标。
要禁用特定数据源的指标,请将 quarkus.datasource.jdbc.enable-metrics
设置为 false
,或为命名数据源应用 quarkus.datasource.<datasource name>.jdbc.enable-metrics
。这将禁用收集指标,并在 /q/metrics
端点中公开它们(如果禁用了收集它们的机制)。
相反,将 quarkus.datasource.jdbc.enable-metrics
设置为 true
,或 quarkus.datasource.<datasource name>.jdbc.enable-metrics
用于一个命名的数据源,即使指标扩展没有被使用。如果您需要以编程方式访问收集的指标,这非常有用。在注入的 AgroalDataSource
实例上调用 dataSource.getMetrics ()
后可用。
如果禁用了此数据源的指标集合,则所有值都会为零。
1.3.3. 数据源追踪
要将追踪与数据源搭配使用,您需要为项目添加 quarkus-opentelemetry
扩展。
您不需要声明不同的驱动程序,因为您需要追踪。如果使用 JDBC 驱动程序,您需要按照 此处 OpenTelemetry 扩展中的说明进行操作。
即使所有追踪基础架构都默认不启用数据源追踪,而且您需要通过设置此属性来启用它:
# enable tracing quarkus.datasource.jdbc.telemetry=true
1.3.4. Narayana 事务管理器集成
如果 Narayana JTA 扩展也可用,则会自动集成。
您可以通过设置 transactions
配置属性来覆盖它:
-
quarkus.datasource.jdbc.transactions
用于默认的未命名数据源 -
Quarkus.datasource. <datasource-name& gt; .jdbc.transactions
for named datasource
如需更多信息,请参阅下面的 配置参考部分。
要使用 JDBC 促进数据库中存储事务日志,请参阅 使用 Quarkus 指南中的将事务日志配置为存储在使用事务 的数据源 部分中。
1.3.4.1. 命名数据源
使用 Dev Services 时,将始终创建默认数据源,但要指定命名数据源,您需要至少有一个构建时间属性,以便 Quarkus 能够检测如何创建数据源。
您通常会指定 db-kind
属性,或通过设置 quarkus.datasource."name".devservices.enabled=true
来显式启用 Dev Services。
1.3.5. 使用内存数据库进行测试
H2 和 Derby 等一些 数据库 通常用作快速运行集成测试的工具。
推荐的方法是使用您要在生产环境中使用的实际数据库,特别是 Dev Services 为测试提供零配置数据库,并对容器运行测试相对快速,并在实际环境中生成预期结果。但是,在需要运行简单集成测试时,也可以使用 JVM 支持的数据库。
1.3.5.1. 支持和限制
嵌入式数据库(H2 和 Derby)在 JVM 模式中工作。对于原生模式,会有以下限制:
- Derby 无法嵌入到原生模式的应用程序中。但是,Quarkus Derby 扩展允许对 Derby JDBC 客户端 进行原生编译,支持 远程连接。
- 不建议将 H2 嵌入到您的原生镜像中。考虑使用替代方法,例如改为使用远程连接单独的数据库。