group实现
This commit is contained in:
parent
dd55ff2f90
commit
342e18766e
|
@ -47,7 +47,7 @@ public class ConfigGateway implements RouteDefinitionLocator {
|
||||||
HashMap<String, BiConsumer<ReferenceConfig<GenericService> , String>> specialField = new HashMap<String, BiConsumer<ReferenceConfig<GenericService> , String>>();
|
HashMap<String, BiConsumer<ReferenceConfig<GenericService> , String>> specialField = new HashMap<String, BiConsumer<ReferenceConfig<GenericService> , String>>();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ApplicationContext applicationContext;
|
private ApplicationContext appContext;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public GenericServicePool genericServicePool() {
|
public GenericServicePool genericServicePool() {
|
||||||
|
@ -200,7 +200,7 @@ public class ConfigGateway implements RouteDefinitionLocator {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// TODO: 任何错误都直接终止退出
|
// TODO: 任何错误都直接终止退出
|
||||||
log.error(e.toString());
|
log.error(e.toString());
|
||||||
SpringApplication.exit(applicationContext);
|
SpringApplication.exit(appContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
// gs.$invoke(method, parameterTypes, args)
|
// gs.$invoke(method, parameterTypes, args)
|
||||||
|
@ -261,11 +261,50 @@ public class ConfigGateway implements RouteDefinitionLocator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String uriString = "dubbo://";
|
|
||||||
|
|
||||||
|
// GenericServicePool gsPool = appContext.getBean(GenericServicePool.class);
|
||||||
|
// GenericService gs = gsPool.get(rkey);
|
||||||
|
// if(gs == null) {
|
||||||
|
// ReferenceConfig<GenericService> reference = new ReferenceConfig<GenericService>(); // 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存
|
||||||
|
// reference.setApplication(new ApplicationConfig("dubbo-exchange")); // 必须
|
||||||
|
// // reference.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
|
||||||
|
// reference.setGroup("test");
|
||||||
|
// reference.setInterface("ocean.demo.api.IExchange"); // 弱类型接口名 必须
|
||||||
|
// reference.setVersion("1.0.0"); // 必须
|
||||||
|
// reference.setConnections(rconnections);
|
||||||
|
// reference.setGeneric(true); // 声明为泛化接口
|
||||||
|
// // gsPool.add(rkey, reference.get());
|
||||||
|
// gs = reference.get();
|
||||||
|
// gsPool.put(rkey, gs);
|
||||||
|
// }
|
||||||
|
|
||||||
|
ReferenceConfig<GenericService> reference = new ReferenceConfig<GenericService>();
|
||||||
|
String UriString = "dubbo://";
|
||||||
|
|
||||||
|
Object application = iter.get("application");
|
||||||
|
if (application != null) {
|
||||||
|
BiConsumer<ReferenceConfig<GenericService>, String> doFunc = specialField.get("application");
|
||||||
|
if(doFunc != null) {
|
||||||
|
doFunc.accept(reference, (String)application);
|
||||||
|
}
|
||||||
|
UriString += (String)application + "/";
|
||||||
|
}
|
||||||
|
|
||||||
Object group = iter.get("group");
|
Object group = iter.get("group");
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
rd.setOrder((int) group);
|
BiConsumer<ReferenceConfig<GenericService>, String> doFunc = specialField.get((String)group);
|
||||||
|
if(doFunc != null) {
|
||||||
|
doFunc.accept(reference, (String)application);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
ConfigSpecialFunction.setDefault(reference, "group", (String)group);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("配置解析错误 字段: {}:{}", "group", group);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
UriString += (String)application + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
Object registry = iter.get("registry");
|
Object registry = iter.get("registry");
|
||||||
|
@ -273,10 +312,9 @@ public class ConfigGateway implements RouteDefinitionLocator {
|
||||||
rd.setOrder((int) registry);
|
rd.setOrder((int) registry);
|
||||||
}
|
}
|
||||||
|
|
||||||
Object application = iter.get("application");
|
|
||||||
if (registry != null) {
|
|
||||||
rd.setOrder((int) application);
|
|
||||||
}
|
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,37 @@
|
||||||
package cn.ecpark.service.usergw.config;
|
package cn.ecpark.service.usergw.config;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import javax.el.MethodNotFoundException;
|
||||||
|
|
||||||
import org.apache.dubbo.config.ApplicationConfig;
|
import org.apache.dubbo.config.ApplicationConfig;
|
||||||
import org.apache.dubbo.config.ReferenceConfig;
|
import org.apache.dubbo.config.ReferenceConfig;
|
||||||
import org.apache.dubbo.rpc.service.GenericService;
|
import org.apache.dubbo.rpc.service.GenericService;
|
||||||
|
|
||||||
|
import cn.ecpark.service.usergw.utils.Convert;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ConfigSpecialFunction
|
* ConfigSpecialFunction
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public class ConfigSpecialFunction {
|
public class ConfigSpecialFunction {
|
||||||
|
|
||||||
// public static BiConsumer<ReferenceConfig<GenericService>, String> setApplication = (ref, cfgValue) -> {
|
// public static BiConsumer<ReferenceConfig<GenericService>, String>
|
||||||
// ref.setApplication(new ApplicationConfig(cfgValue));
|
// setApplication = (ref, cfgValue) -> {
|
||||||
|
// ref.setApplication(new ApplicationConfig(cfgValue));
|
||||||
// };
|
// };
|
||||||
|
|
||||||
public static void setApplication(ReferenceConfig<GenericService> ref, String cfgValue) {
|
public static void setApplication(ReferenceConfig<GenericService> ref, String cfgValue) {
|
||||||
ref.setApplication(new ApplicationConfig(cfgValue));
|
ref.setApplication(new ApplicationConfig(cfgValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setDefault(ReferenceConfig<GenericService> ref, String methodName, String cfgValue) throws Exception {
|
||||||
|
cfgValue = "set" + Convert.firstUpperCase(methodName);
|
||||||
|
log.info(methodName,cfgValue);
|
||||||
|
Method method = ref.getClass().getMethod(methodName);
|
||||||
|
method.invoke(ref, cfgValue);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user