You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为AWS RDS Proxy配置Quarkus 3的Agroal最优参数?

Quarkus 3 适配AWS RDS Proxy的Agroal最优配置方案

你的思路完全正确——使用AGROAL_POOLLESS模式是适配RDS Proxy的最佳选择,原因很简单:RDS Proxy本身已经提供了成熟的连接池管理、连接复用和故障转移能力,在Lambda这种短生命周期、快速伸缩的环境下,应用层再维护自己的连接池完全是画蛇添足,无池模式会把所有连接请求直接委托给RDS Proxy,完美契合场景需求。

关于你提到的maxSize参数:

  • 确实必须设置,因为Agroal的配置校验逻辑要求这个参数不能为空
  • 但在AGROAL_POOLLESS模式下,这个参数完全没有实际作用,你可以随便填一个值(比如1或者100),Agroal不会基于这个值限制连接数量,所有请求都会直接转发给RDS Proxy

下面是优化后的完整配置代码:

@ApplicationScoped
public class DataSourceConfig {
    @Produces
    public AgroalDataSource dataSource() throws SQLException {
        AgroalDataSourceConfigurationSupplier configSupplier = new AgroalDataSourceConfigurationSupplier();

        configSupplier
                // 指定无池模式,将连接管理完全委托给RDS Proxy
                .dataSourceImplementation(AgroalDataSourceConfiguration.DataSourceImplementation.AGROAL_POOLLESS)
                .connectionPoolConfiguration()
                // 必须设置,但无实际作用,随便填一个值即可
                .maxSize(1)
                // 可选:设置连接超时,适配Lambda的执行超时限制
                .connectionTimeout(Duration.ofSeconds(30))
                .connectionFactoryConfiguration()
                // 填写RDS Proxy的JDBC端点,而非直接的RDS实例地址
                .jdbcUrl("jdbc:mysql://your-rds-proxy-endpoint:3306/your-db-name")
                .credential(new NamePrincipal("your-db-username"))
                .credential(new SimplePassword("your-db-password"));

        return AgroalDataSource.from(configSupplier.get());
    }
}

额外的几个注意点:

  • 不需要设置minSize、initialSize、maxLifetime这类连接池相关参数,在无池模式下它们都会被忽略
  • 如果你的Lambda是通过IAM角色认证RDS Proxy,可以替换掉用户名密码的凭据配置,改用IAM认证的方式(需要额外配置JDBC驱动的IAM插件)
  • 确保Lambda的执行角色拥有访问RDS Proxy的权限,并且安全组配置允许Lambda访问RDS Proxy的端口

内容的提问来源于stack exchange,提问作者Andy McKibbin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:06:18