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 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 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 嵌入到您的原生镜像中。考虑使用替代方法,例如改为使用远程连接单独的数据库。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.