2017-04-04 79 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