如何在Google Cloud App Engine的Quarkus中配置额外JDBC属性
解决Quarkus 1.x连接Google Cloud SQL PostgreSQL的JDBC属性配置问题
你遇到的问题主要来自两个核心点:Quarkus版本对应的配置项差异,以及缺少Cloud SQL Socket Factory的依赖。你的Quarkus版本是1.10.2.Final(属于1.x旧版本),但参考的文档是针对新版本的,所以配置项不匹配,下面是具体的解决步骤:
1. 修正JDBC额外属性的配置方式
在Quarkus 1.x系列中,不支持quarkus.datasource.jdbc.additional-jdbc-properties这种批量配置的写法,需要为每个额外JDBC属性单独配置,统一使用quarkus.datasource.jdbc.property.作为前缀。
修改你的application.properties数据源配置部分:
quarkus.package.type=uber-jar # datasource configuration quarkus.datasource.db-kind = postgresql quarkus.datasource.jdbc.url = jdbc:postgresql:///counter quarkus.datasource.username = postgres quarkus.datasource.password = <password> # 单独配置每个JDBC属性 quarkus.datasource.jdbc.property.socketFactory=com.google.cloud.sql.postgres.SocketFactory quarkus.datasource.jdbc.property.cloudSqlInstance=<project>:<region>:<instance> quarkus.datasource.jdbc.max-size=16 # drop and create the database at startup (use `update` to only update the schema) quarkus.hibernate-orm.database.generation=drop-and-create
2. 添加Cloud SQL Socket Factory依赖
你的pom.xml中缺少连接Google Cloud SQL必需的Socket Factory依赖,需要在<dependencies>块中添加以下内容:
<dependency> <groupId>com.google.cloud.sql</groupId> <artifactId>postgres-socket-factory</artifactId> <!-- 版本会由你引入的libraries-bom自动管理,无需手动指定 --> </dependency>
由于你已经引入了Google的libraries-bom,bom会自动维护兼容的依赖版本,不需要额外指定版本号。
为什么之前的配置失败?
quarkus.datasource.jdbc.additional-jdbc-properties这个批量配置项是Quarkus 2.x及以后版本才引入的,你的1.10.2.Final版本不支持该属性,所以会被日志提示"忽略"。- 缺少Socket Factory依赖的话,即使配置了属性,运行时也找不到对应的类,最终会导致连接失败。
完成以上修改后,重新打包部署到App Engine,应该就能成功连接到Google Cloud SQL的PostgreSQL实例了。
内容的提问来源于stack exchange,提问作者RHa
相关产品推荐
相关产品推荐

