首页 > 解决方案 > Quarkus 反应式数据源 SSL 握手错误

问题描述

我正在使用Quarkus 1.13.3.FINAL,并且在部署我的应用程序时遇到了反应式数据源运行状况检查的问题。我同时使用了 JDBC 和反应式数据源。以下是它们的设置方式:

%devops.quarkus.datasource.jdbc.url= jdbc:postgresql://<host>:5432/<database>?sslmode=require
%devops.quarkus.datasource.reactive.url= postgresql://<host>:5432/<database>
%devops.quarkus.datasource.reactive.postgresql.ssl-mode=require

令我困惑的是,异常表明反应数据源的 SSL 握手错误,但 JDBC 工作正常。此外,它们在本地都可以正常工作。

2021-05-03 16:41:04,777 INFO  [io.sma.health] (vert.x-worker-thread-10) SRHCK01001: Reporting health down status: {"status":"DOWN","checks":[{"name":"Reactive PostgreSQL connections health check","status":"DOWN","data":{"<default>":"up"}},{"name":"Database connections health check","status":"UP"}]}
2021-05-03 16:41:14,572 SEVERE [io.ver.cor.net.imp.ConnectionBase] (vert.x-eventloop-thread-1) PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2021-05-03 16:41:14,573 WARN  [io.qua.rea.dat.run.ReactiveDatasourceHealthCheck] (vert.x-eventloop-thread-1) Error obtaining database connection for healthcheck of datasource '<default>': io.vertx.core.VertxException: SSL handshake failed

我读过反应式和 JDBC 数据源不能同时使用,但现在似乎不再如此了。

因为我使用 Vert.x RabbitMQ 客户端,所以我需要响应式数据源。这给了我一个响应式消费者,所以我不能再使用我的 JPA 存储库,不得不求助于响应式数据源。

我缺少一些配置吗?

标签: configurationvert.xquarkusreactive-postgresql-client

解决方案


我面临同样的问题(使用完全相同的堆栈)。在Zulip官方文档上找到了一些线索。只需在反应式数据库 url 上添加 trust-all 配置和 ssl 模式:

quarkus.datasource.reactive.trust-all=true
quarkus.datasource.reactive.url=postgresql://<host>:5432/<database>?sslmode=verify-ca

推荐阅读