1.新建路由工厂
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.cluster.Router;
import org.apache.dubbo.rpc.cluster.RouterFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Copyright (c) 2018 Choice, Inc. All Rights Reserved. Choice Proprietary and Confidential.
*
* @author huanggua
* @since 2021/04/15
*/
@Activate(order = 1)
public class EnvRouterFactory implements RouterFactory {
private static final Logger LOGGER = LoggerFactory.getLogger(EnvRouterFactory.class);
@Override
public Router getRouter(URL url) {
LOGGER.info("启动dubbo特性环境路由");
return new EnvRouter();
}
}
2. 新建路由
public class EnvRouter extends AbstractRouter {
private static final Logger LOGGER = LoggerFactory.getLogger(EnvRouter.class);
public EnvRouter() {
this.priority = Integer.MAX_VALUE + 2;
}
@Override
public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation)
throws RpcException {
//TODO 逻辑处理
return invokers;
}
}
3.在/resrouces/META-INF/dubbo/目录新建org.apache.dubbo.rpc.cluster.RouterFactory配置文件
envRouterFactory=com.weimai.envrouter.dubbo.router.EnvRouterFactory