use of com.ctrip.platform.dal.common.enums.DBModel in project dal by ctripcorp.
the class ClusterConfigAdapter method buildMultiHostClusterConfig.
private ClusterConfig buildMultiHostClusterConfig(MultiHostConnectionStringConfigure configure) {
ClusterConfigWithNoVersion clusterConfig = new ClusterConfigWithNoVersion(configure.getName(), ClusterType.NORMAL, DatabaseCategory.MYSQL);
DatabaseShardConfigImpl databaseShardConfig = new DatabaseShardConfigImpl(clusterConfig, 0);
List<HostSpec> hosts = configure.getHosts();
hosts.forEach(host -> {
DatabaseConfigImpl databaseConfig = new DatabaseConfigImpl(databaseShardConfig);
databaseConfig.setIp(host.host());
databaseConfig.setPort(host.port());
databaseConfig.setZone(host.zone());
databaseConfig.setDbName(configure.getDbName());
databaseConfig.setUid(configure.getUserName());
databaseConfig.setPwd(configure.getPassword());
databaseShardConfig.addDatabaseConfig(databaseConfig);
});
clusterConfig.addDatabaseShardConfig(databaseShardConfig);
DBModel dbModel = configure.getDbModel();
String routeStrategyName = DBModel.MGR == dbModel ? RouteStrategyEnum.WRITE_ORDERED.getAlias() : RouteStrategyEnum.WRITE_CURRENT_ZONE_FIRST.getAlias();
DefaultClusterRouteStrategyConfig routeStrategy = new DefaultClusterRouteStrategyConfig(routeStrategyName);
if (configure.getZonesPriority() != null)
routeStrategy.setProperty(MultiMasterStrategy.ZONES_PRIORITY, configure.getZonesPriority());
if (configure.getFailoverTimeMS() != null)
routeStrategy.setProperty(MultiMasterStrategy.FAILOVER_TIME_MS, String.valueOf(configure.getFailoverTimeMS()));
if (configure.getBlacklistTimeoutMS() != null)
routeStrategy.setProperty(MultiMasterStrategy.BLACKLIST_TIMEOUT_MS, String.valueOf(configure.getBlacklistTimeoutMS()));
if (configure.getFixedValidatePeriodMS() != null)
routeStrategy.setProperty(MultiMasterStrategy.FIXED_VALIDATE_PERIOD_MS, String.valueOf(configure.getFixedValidatePeriodMS()));
clusterConfig.setRouteStrategyConfig(routeStrategy);
clusterConfig.setCustomizedOption(new DefaultDalConfigCustomizedOption());
return clusterConfig;
}
Aggregations