use of rpc.turbo.loadbalance.LoadBalanceFactory in project turbo-rpc by hank-whu.
the class AppConfig method parse.
@SuppressWarnings({ "rawtypes", "unchecked" })
private static AppConfig parse(Config config) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
String group = getStringOrElse(config, "group", TurboService.DEFAULT_GROUP);
String app = getStringOrElse(config, "app", TurboService.DEFAULT_GROUP);
int globalTimeout = getIntOrElse(config, "globalTimeout", 0);
int maxRequestWait = getIntOrElse(config, "maxRequestWait", 10000);
int connectPerServer = getIntOrElse(config, "connectPerServer", 1);
int serverErrorThreshold = getIntOrElse(config, "serverErrorThreshold", 16);
int connectErrorThreshold = getIntOrElse(config, "connectErrorThreshold", 2 * serverErrorThreshold / connectPerServer);
String serializerClass = getStringOrElse(config, "serializer.class", ProtostuffSerializer.class.getName());
Serializer serializer = (Serializer) //
Class.forName(//
serializerClass).getDeclaredConstructor().newInstance();
String loadBalanceFactoryClass = getStringOrElse(config, "loadBalanceFactory.class", RoundRobinLoadBalanceFactory.class.getName());
LoadBalanceFactory loadBalanceFactory = (LoadBalanceFactory) //
Class.forName(//
loadBalanceFactoryClass).getDeclaredConstructor().newInstance();
String discoverClass = getStringOrElse(config, "discover.class", DirectConnectDiscover.class.getName());
List<String> discoverAddressList = config.getStringList("discover.address");
Discover discover = (Discover) //
Class.forName(//
discoverClass).getDeclaredConstructor().newInstance();
List<HostPort> hostPorts = //
discoverAddressList.stream().map(//
str -> new HostPort(str)).collect(Collectors.toList());
discover.init(hostPorts);
AppConfig appConfig = new AppConfig();
appConfig.setGroup(group);
appConfig.setApp(app);
appConfig.setSerializer(serializer);
appConfig.setGlobalTimeout(globalTimeout);
appConfig.setMaxRequestWait(maxRequestWait);
appConfig.setConnectPerServer(connectPerServer);
appConfig.setServerErrorThreshold(serverErrorThreshold);
appConfig.setConnectErrorThreshold(connectErrorThreshold);
appConfig.setLoadBalanceFactory(loadBalanceFactory);
appConfig.setDiscover(discover);
return appConfig;
}
Aggregations