![](/img/trans.png)
[英]Is there a way to handle dynamic connexion to datasource with quarkus?
[英]Dynamic datasource connection in Quarkus
我的问题类似于这篇 2 年前的帖子中的问题:
我说了 10 个不同的数据库,它们都在 Postgres 中,它们甚至有相同的用户和密码,所以唯一改变的是数据库名称。
我有一个类似于 /{databasename}/customers 的端点,因此我希望能够从作为参数传递的数据库名称中检索客户列表。
我知道我可能会尝试编写一个扩展来做到这一点,但我无法做到,而且我不确定我是否真的想修改框架来做到这一点。
我想了解做这样的事情有哪些选择
我认为类似于下面代码片段的东西可能有助于动态连接到 DS,但我无法让它工作,因为这是一种在应用程序启动后以编程方式设置连接的方法:
AgroalDataSourceConfigurationSupplier configuration = new AgroalDataSourceConfigurationSupplier()
.dataSourceImplementation( AgroalDataSourceConfiguration.DataSourceImplementation.AGROAL )
.metricsEnabled( false )
.connectionPoolConfiguration( cp -> cp
.minSize( 5 )
.maxSize( 20 )
.initialSize( 10 )
.connectionValidator( AgroalConnectionPoolConfiguration.ConnectionValidator.defaultValidator() )
.acquisitionTimeout( Duration.ofSeconds( 5 ) )
.leakTimeout( Duration.ofSeconds( 5 ) )
.validationTimeout( Duration.ofSeconds( 50 ) )
.reapTimeout( Duration.ofSeconds( 500 ) )
.connectionFactoryConfiguration( cf -> cf
.jdbcUrl( "jdbc:postgresql://localhost/quarkus_test3" )
// .connectionProviderClassName( "org.h2.Driver" )
.autoCommit( false )
.jdbcTransactionIsolation( AgroalConnectionFactoryConfiguration.TransactionIsolation.SERIALIZABLE )
.principal( new NamePrincipal( "postgres" ) )
.credential( new SimplePassword( "postgres123" ) )
)
);
try ( AgroalDataSource dataSource = AgroalDataSource.from( configuration ) ) {
Connection connection = dataSource.getConnection();
connection.close();
} catch ( SQLException e ) {
System.out.println( "Oops! " + e.getMessage() );
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.