2017-04-04 129 views
1

我们的应用程序有多个模块,每个模块在同一个mysql数据库中使用自己的模式。现在我需要为每个模块创建不同的连接池配置,因为它们具有不同的数据库资源消耗特性,即某个模块在某个时间点可能有20个活动连接,但其他模块可能只有1个最大值。我在这里和其他论坛搜索,找不到解决方案,只是这个主题不是关于多租户或多数据库,所有模式都在同一个数据库。应用程序中不同模块的多连接池配置

这里的配置有:

<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="@[email protected]" /> 
    <property name="minPoolSize" value="@[email protected]" /> 
    <property name="maxPoolSize" value="@[email protected]" /> <!-- 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://@[email protected]/" /> 
    <property name="user" value="@[email protected]" /> 
    <property name="password" value="@[email protected]" /> 
    <property name="dataSourceName" value="@[email protected]" /> 
</bean> 

所以现在我有两个问题:

1)是否有可能在春季的一个数据源不同的连接池的配置? 2)如果我必须采用多种数据源方式(一个模块的一个数据源),是否正在实现Spring的AbstractRoutingDataSource正确的方法呢?

谢谢!

+0

对于你的第一个问题,是的,这是可能的,但你不能在同一时间使用它们。 – akuma8

回答

0

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

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

相关问题