2017-04-04 1 views
1

우리 응용 프로그램에는 여러 모듈이 있으며 각 모듈은 동일한 mysql 데이터베이스에서 자체 스키마를 사용합니다. 이제 다른 db 리소스를 사용하기 때문에 각 모듈마다 다른 연결 풀 구성을 만들어야합니다. 즉, 한 모듈은 한 순간에 20 개의 활성 연결을 가질 수 있지만 다른 모듈은 단지 1 개의 max를 가질 수 있습니다. 여기서는 다른 포럼을 검색했는데 해결책을 찾지 못했습니다.이 주제는 멀티 테넌시 또는 다중 데이터베이스가 아니라 모든 스키마가 동일한 데이터베이스에 있습니다. 여기응용 프로그램의 다른 모듈에 대한 다중 연결 풀 구성

는 config 우리는 가지고있다 :

<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) 여러 개의 데이터 소스 (하나의 모듈에 대해 하나의 데이터 소스)를 사용해야한다면 스프링의 AbstractRoutingDataSource 올바른 방법을 구현하고 있습니까?

감사합니다.

+0

첫 번째 질문은 가능하지만 동시에 사용할 수는 없습니다. – akuma8

답변

0

Ad.1 데이터 소스는 실제 연결 풀에 있으므로 다른 풀의 맨 위에 여러 풀이 있어야합니다. 당신은 할 수 있지만 다른 많은 문제에 직면하게 될 것입니다.

Ad.2. 네. RoutingDataSource이 이미 있으므로 AbstractRoutingDataSource의 구현이어야합니다. 이미 조회를 수행하는 데 사용되어야하는 현재 데이터 소스 routing key을 결정할 논리가 이미 있습니다.

관련 문제