gpt4 book ai didi

java - 应用程序中不同模块的多连接池配置

转载 作者:行者123 更新时间:2023-11-30 22:01:27 25 4
gpt4 key购买 nike

我们的应用程序有多个模块,每个模块在同一个 mysql 数据库中使用自己的模式。现在我需要为每个模块进行不同的连接池配置,因为它们具有不同的数据库资源消耗性质,即某些模块在某个时间点可能有 20 个 Activity 连接,但其他模块可能最多只有 1 个。我在这里和其他论坛上搜索过,找不到解决方案,只是这个主题与 Multi-Tenancy 或多数据库无关,所有模式都在同一个数据库中。

这是我们的配置:

<bean id="dataSource" class="our.own.package.RoutingDataSource"> <!-- RoutingDataSource extends spring AbstractDataSource -->
<property name="master" ref="masterDS"/>
</bean>
<bean id="abstractDataSource" abstract="true">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="initialPoolSize" value="@initial.pool.size@" />
<property name="minPoolSize" value="@min.pool.size@" />
<property name="maxPoolSize" value="@max.pool.size@" /> <!-- I want to have different configs for each module in our application -->
</bean>
<bean id="masterDS" class="com.mchange.v2.c3p0.ComboPooledDataSource" parent="abstractDataSource">
<property name="jdbcUrl" value="jdbc:mysql://@host@/" />
<property name="user" value="@user@" />
<property name="password" value="@pwd@" />
<property name="dataSourceName" value="@dbName@" />
</bean>

那么现在我有两个问题:

1) Spring 中是否可以为一个数据源配置不同的连接池?

2) 如果我必须采用多数据源方式(一个模块一个数据源),那么实现 Spring 的 AbstractRoutingDataSource 是正确的方法吗?

谢谢!

最佳答案

Ad.1 您的数据源位于事实连接池中,因此您希望在另一个池的顶部有多个池。你可以做到,但你会面临许多其他问题。

广告 2。当然是。您已经有了 RoutingDataSource,所以这个应该是 AbstractRoutingDataSource 的实现。可能你已经有逻辑来确定当前的数据源 routing key 应该用来进行查找。

关于java - 应用程序中不同模块的多连接池配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43214331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com