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-micrometerquarkus-smallrye-metrics 扩展,quarkus-agroal 可以为指标 registry 贡献一些与数据源相关的指标。这可以通过将 quarkus.datasource.metrics.enabled 属性设置为 true 来激活。

要使公开的指标包含任何实际值,必须在 Agroal 机制在内部启用指标集合。默认情况下,当存在指标扩展时,所有数据源启用了此指标集合机制,并且启用了 Agroal 扩展的指标。

要禁用特定数据源的指标,请将 quarkus.datasource.jdbc.enable-metrics 设置为 false,或者为命名数据源应用 quarkus.datasource.<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. &lt;datasource-name& gt; .jdbc.transactions 用于命名数据源

如需更多信息,请参阅下面的 配置参考部分

为了便于使用 JDBC 在数据库中存储事务日志,请参阅在 Quarkus 指南中的 配置事务日志以存储在使用事务 的数据源 部分。

1.3.4.1. 名为 datasources

使用 Dev Services 时,将始终创建默认数据源,但要指定命名数据源,您需要至少有一个构建时间属性,以便 Quarkus 能够检测到如何创建数据源。

通常,您可以通过设置 quarkus.datasource."name".devservices.enabled=true 来指定 db-kind 属性或显式启用 Dev Services。

1.3.5. 使用内存数据库进行测试

H2 和 Derby 等数据库通常在 嵌入式模式下 用作快速运行集成测试的工具。

推荐的方法是使用您在生产环境中使用的实际数据库,特别是当 Dev Services 提供零配置数据库用于测试,并根据容器运行测试相对快速,并在实际环境中生成预期的结果。但是,在需要运行简单集成测试时,也可以使用 JVM 驱动的数据库。

1.3.5.1. 支持和限制

嵌入式数据库(H2 和 Derby)在 JVM 模式下工作。对于原生模式,有以下限制:

  • Derby 无法嵌入到原生模式下的应用程序中。但是,Quarkus Derby 扩展允许原生编译 Derby JDBC 客户端,支持 远程连接
  • 不建议在您的原生镜像中嵌入 H2。例如,请考虑使用到独立数据库的远程连接的替代方法。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.