分4库 配置文件
prod 分库 其它环境不分库
This commit is contained in:
@@ -9,17 +9,16 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration;
|
||||
import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
|
||||
import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
|
||||
import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration;
|
||||
import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@@ -31,6 +30,9 @@ import java.util.stream.Collectors;
|
||||
@ConfigurationProperties(prefix = "spring.shardingsphere")
|
||||
public class ShardingConfig {
|
||||
|
||||
@Value("${spring.profiles.active}")
|
||||
private String activeProfile;
|
||||
|
||||
/**
|
||||
* 读取数据源信息
|
||||
*/
|
||||
@@ -49,12 +51,46 @@ public class ShardingConfig {
|
||||
*/
|
||||
private String centerTablesDataNode;
|
||||
|
||||
|
||||
/**
|
||||
* 中心表,不进行分库操作
|
||||
*/
|
||||
private List<String> centerTables;
|
||||
private Set<String> centerTables;
|
||||
|
||||
/**
|
||||
* 区域库的节点
|
||||
*/
|
||||
private String regionTablesDataNode;
|
||||
|
||||
/**
|
||||
* 区域表分库策略的字段
|
||||
*/
|
||||
private String regionTablesShardingDatabaseColumn;
|
||||
|
||||
/**
|
||||
* 区域表分库的算法
|
||||
*/
|
||||
private String regionTablesShardingDatabaseAlgorithm;
|
||||
|
||||
/**
|
||||
* 分库表,通过userId进行分库
|
||||
*/
|
||||
private Set<String> regionTables;
|
||||
|
||||
|
||||
/**
|
||||
* 区域表分库策略的字段
|
||||
*/
|
||||
private String courseDetailsShardingDatabaseColumn;
|
||||
|
||||
/**
|
||||
* 区域表分库的算法
|
||||
*/
|
||||
private String courseDetailsShardingDatabaseAlgorithm;
|
||||
|
||||
/**
|
||||
* 分库表,通过userId进行分库
|
||||
*/
|
||||
private Set<String> courseDetails;
|
||||
|
||||
/**
|
||||
* 配置sharding-jdbc数据源
|
||||
@@ -88,15 +124,36 @@ public class ShardingConfig {
|
||||
String.format(centerTablesDataNode, centerTable));
|
||||
sets.add(tableRuleConfig);
|
||||
}
|
||||
if ("prod".equals(activeProfile)) {
|
||||
// 定义区域表的分库规则
|
||||
InlineShardingStrategyConfiguration databaseShardingStrategyConfig = new InlineShardingStrategyConfiguration(
|
||||
regionTablesShardingDatabaseColumn, regionTablesShardingDatabaseAlgorithm);
|
||||
for (String regionTable : regionTables) {
|
||||
TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(regionTable, String.format(regionTablesDataNode, regionTable));
|
||||
tableRuleConfig.setDatabaseShardingStrategyConfig(databaseShardingStrategyConfig);
|
||||
sets.add(tableRuleConfig);
|
||||
}
|
||||
|
||||
// // 定义区域表的分库规则
|
||||
// InlineShardingStrategyConfiguration databaseShardingStrategyConfig = new InlineShardingStrategyConfiguration(
|
||||
// regionTablesShardingDatabaseColumn, regionTablesShardingDatabaseAlgorithm);
|
||||
// for (String regionTable : regionTables) {
|
||||
// TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(regionTable, String.format(regionTablesDataNode, regionTable));
|
||||
// tableRuleConfig.setDatabaseShardingStrategyConfig(databaseShardingStrategyConfig);
|
||||
// sets.add(tableRuleConfig);
|
||||
// }
|
||||
// 定义区域表的分库规则
|
||||
InlineShardingStrategyConfiguration courseDetailsShardingStrategyConfig = new InlineShardingStrategyConfiguration(
|
||||
courseDetailsShardingDatabaseColumn, courseDetailsShardingDatabaseAlgorithm);
|
||||
for (String regionTable : courseDetails) {
|
||||
TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(regionTable, String.format(regionTablesDataNode, regionTable));
|
||||
tableRuleConfig.setDatabaseShardingStrategyConfig(courseDetailsShardingStrategyConfig);
|
||||
sets.add(tableRuleConfig);
|
||||
}
|
||||
}else {
|
||||
for (String centerTable : regionTables) {
|
||||
TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(centerTable,
|
||||
String.format(centerTablesDataNode, centerTable));
|
||||
sets.add(tableRuleConfig);
|
||||
}
|
||||
for (String centerTable : courseDetails) {
|
||||
TableRuleConfiguration tableRuleConfig = new TableRuleConfiguration(centerTable,
|
||||
String.format(centerTablesDataNode, centerTable));
|
||||
sets.add(tableRuleConfig);
|
||||
}
|
||||
}
|
||||
return sets;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user