当前位置: 首页>>代码示例>>Java>>正文


Java Router类代码示例

本文整理汇总了Java中com.alibaba.dubbo.rpc.cluster.Router的典型用法代码示例。如果您正苦于以下问题:Java Router类的具体用法?Java Router怎么用?Java Router使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


Router类属于com.alibaba.dubbo.rpc.cluster包,在下文中一共展示了Router类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: list

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
public List<Invoker<T>> list(Invocation invocation) throws RpcException {
    if (destroyed){
        throw new RpcException("Directory already destroyed .url: "+ getUrl());
    }
    List<Invoker<T>> invokers = doList(invocation);
    List<Router> localRouters = this.routers; // local reference
    if (localRouters != null && localRouters.size() > 0) {
        for (Router router: localRouters){
            try {
                if (router.getUrl() == null || router.getUrl().getParameter(Constants.RUNTIME_KEY, true)) {
                    invokers = router.route(invokers, getConsumerUrl(), invocation);
                }
            } catch (Throwable t) {
                logger.error("Failed to execute router: " + getUrl() + ", cause: " + t.getMessage(), t);
            }
        }
    }
    return invokers;
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:20,代码来源:AbstractDirectory.java

示例2: testRoute_PickInvokers

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
@Test
public void testRoute_PickInvokers(){
    String rule = "var result = new java.util.ArrayList(invokers.size());" +
            		"for (i=0;i<invokers.size(); i++){ " +
            		    "if (invokers.get(i).isAvailable()) {" +
            		        "result.add(invokers.get(i)) ;" +
            		    "}" +
            		"} ; " +
            		"return result;";
    String script = "function route(invokers,invocation,context){" + rule + "} route(invokers,invocation,context)";
    Router router = new ScriptRouterFactory().getRouter(getRouteUrl(script));
    
    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    Invoker<String> invoker1 = new MockInvoker<String>(false) ;
    Invoker<String> invoker2 = new MockInvoker<String>(true) ;
    Invoker<String> invoker3 = new MockInvoker<String>(true) ;
    invokers.add(invoker1);
    invokers.add(invoker2);
    invokers.add(invoker3);
    List<Invoker<String>> fileredInvokers = router.route(invokers, invokers.get(0).getUrl(), new RpcInvocation());
    Assert.assertEquals(2, fileredInvokers.size());
    Assert.assertEquals(invoker2, fileredInvokers.get(0));
    Assert.assertEquals(invoker3, fileredInvokers.get(1));
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:25,代码来源:ScriptRouterTest.java

示例3: toRouters

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
/**
 * 
 * @param urls
 * @return null : no routers ,do nothing
 *         else :routers list
 */
private List<Router> toRouters(List<URL> urls) {
    List<Router> routers = new ArrayList<Router>();
    if(urls == null || urls.size() < 1){
        return routers ;
    }
    if (urls != null && urls.size() > 0) {
        for (URL url : urls) {
            if (Constants.EMPTY_PROTOCOL.equals(url.getProtocol())) {
                continue;
            }
            String routerType = url.getParameter(Constants.ROUTER_KEY);
            if (routerType != null && routerType.length() > 0){
                url = url.setProtocol(routerType);
            }
            try{
                Router router = routerFactory.getRouter(url);
                if (!routers.contains(router))
                    routers.add(router);
            } catch (Throwable t) {
                logger.error("convert router url to router error, url: "+ url, t);
            }
        }
    }
    return routers;
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:32,代码来源:RegistryDirectory.java

示例4: getRouter

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
public Router getRouter(URL url) {
    try {
        // File URL 转换成 其它Route URL,然后Load
        // file:///d:/path/to/route.js?router=script ==> script:///d:/path/to/route.js?type=js&rule=<file-content>
        String protocol = url.getParameter(Constants.ROUTER_KEY, ScriptRouterFactory.NAME); // 将原类型转为协议
        String type = null; // 使用文件后缀做为类型
        String path = url.getPath();
        if (path != null) {
            int i = path.lastIndexOf('.');
            if (i > 0) {
                type = path.substring(i + 1);
            }
        }
        String rule = IOUtils.read(new FileReader(new File(url.getAbsolutePath())));
        URL script = url.setProtocol(protocol).addParameter(Constants.TYPE_KEY, type).addParameterAndEncoded(Constants.RULE_KEY, rule);
        
        return routerFactory.getRouter(script);
    } catch (IOException e) {
        throw new IllegalStateException(e.getMessage(), e);
    }
}
 
开发者ID:zhuxiaolei,项目名称:dubbo2,代码行数:22,代码来源:FileRouterFactory.java

示例5: list

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
public List<Invoker<T>> list(Invocation invocation) throws RpcException {
    if (destroyed) {
        throw new RpcException("Directory already destroyed .url: " + getUrl());
    }
    List<Invoker<T>> invokers = doList(invocation);
    List<Router> localRouters = this.routers; // local reference
    if (localRouters != null && localRouters.size() > 0) {
        for (Router router : localRouters) {
            try {
                if (router.getUrl() == null || router.getUrl().getParameter(Constants.RUNTIME_KEY, true)) {
                    invokers = router.route(invokers, getConsumerUrl(), invocation);
                }
            } catch (Throwable t) {
                logger.error("Failed to execute router: " + getUrl() + ", cause: " + t.getMessage(), t);
            }
        }
    }
    return invokers;
}
 
开发者ID:l1325169021,项目名称:github-test,代码行数:20,代码来源:AbstractDirectory.java

示例6: testRoute_PickInvokers

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
@Test
public void testRoute_PickInvokers() {
    String rule = "var result = new java.util.ArrayList(invokers.size());" +
            "for (i=0;i<invokers.size(); i++){ " +
            "if (invokers.get(i).isAvailable()) {" +
            "result.add(invokers.get(i)) ;" +
            "}" +
            "} ; " +
            "return result;";
    String script = "function route(invokers,invocation,context){" + rule + "} route(invokers,invocation,context)";
    Router router = new ScriptRouterFactory().getRouter(getRouteUrl(script));

    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    Invoker<String> invoker1 = new MockInvoker<String>(false);
    Invoker<String> invoker2 = new MockInvoker<String>(true);
    Invoker<String> invoker3 = new MockInvoker<String>(true);
    invokers.add(invoker1);
    invokers.add(invoker2);
    invokers.add(invoker3);
    List<Invoker<String>> fileredInvokers = router.route(invokers, invokers.get(0).getUrl(), new RpcInvocation());
    Assert.assertEquals(2, fileredInvokers.size());
    Assert.assertEquals(invoker2, fileredInvokers.get(0));
    Assert.assertEquals(invoker3, fileredInvokers.get(1));
}
 
开发者ID:l1325169021,项目名称:github-test,代码行数:25,代码来源:ScriptRouterTest.java

示例7: toRouters

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
/**
 * @param urls
 * @return null : no routers ,do nothing
 * else :routers list
 */
private List<Router> toRouters(List<URL> urls) {
    List<Router> routers = new ArrayList<Router>();
    if (urls == null || urls.size() < 1) {
        return routers;
    }
    if (urls != null && urls.size() > 0) {
        for (URL url : urls) {
            if (Constants.EMPTY_PROTOCOL.equals(url.getProtocol())) {
                continue;
            }
            String routerType = url.getParameter(Constants.ROUTER_KEY);
            if (routerType != null && routerType.length() > 0) {
                url = url.setProtocol(routerType);
            }
            try {
                Router router = routerFactory.getRouter(url);
                if (!routers.contains(router))
                    routers.add(router);
            } catch (Throwable t) {
                logger.error("convert router url to router error, url: " + url, t);
            }
        }
    }
    return routers;
}
 
开发者ID:l1325169021,项目名称:github-test,代码行数:31,代码来源:RegistryDirectory.java

示例8: AbstractDirectory

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
public AbstractDirectory(URL url, URL consumerUrl, List<Router> routers) {
    if (url == null)
        throw new IllegalArgumentException("url == null");
    this.url = url;
    this.consumerUrl = consumerUrl;
    setRouters(routers);
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:8,代码来源:AbstractDirectory.java

示例9: setRouters

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
protected void setRouters(List<Router> routers){
    // copy list
    routers = routers == null ? new  ArrayList<Router>() : new ArrayList<Router>(routers);
    // append url router
	String routerkey = url.getParameter(Constants.ROUTER_KEY);
    if (routerkey != null && routerkey.length() > 0) {
        RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class).getExtension(routerkey);
        routers.add(routerFactory.getRouter(url));
    }
    // append mock invoker selector
    routers.add(new MockInvokersSelector());
    Collections.sort(routers);
	this.routers = routers;
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:15,代码来源:AbstractDirectory.java

示例10: compareTo

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
public int compareTo(Router o) {
    if (o == null || o.getClass() != ConditionRouter.class) {
        return 1;
    }
    ConditionRouter c = (ConditionRouter) o;
    return this.priority == c.priority ? url.toFullString().compareTo(c.url.toFullString()) : (this.priority > c.priority ? 1 : -1);
}
 
开发者ID:flychao88,项目名称:dubbocloud,代码行数:8,代码来源:ConditionRouter.java

示例11: compareTo

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
public int compareTo(Router o) {
    if (o == null || o.getClass() != ScriptRouter.class) {
        return 1;
    }
    ScriptRouter c = (ScriptRouter) o;
    return this.priority == c.priority ? rule.compareTo(c.rule) : (this.priority > c.priority ? 1 : -1);
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:8,代码来源:ScriptRouter.java

示例12: testRoute_Empty_HostFilter

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
@Test
public void testRoute_Empty_HostFilter(){
    Router router = new ConditionRouterFactory().getRouter(getRouteUrl(" => " + " host = " + NetUtils.getLocalHost()));
    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    Invoker<String> invoker1 = new MockInvoker<String>(URL.valueOf("dubbo://10.20.3.3:20880/com.foo.BarService")) ;
    Invoker<String> invoker2 = new MockInvoker<String>(URL.valueOf("dubbo://" + NetUtils.getLocalHost() + ":20880/com.foo.BarService")) ;
    Invoker<String> invoker3 = new MockInvoker<String>(URL.valueOf("dubbo://" + NetUtils.getLocalHost() + ":20880/com.foo.BarService")) ;
    invokers.add(invoker1);
    invokers.add(invoker2);
    invokers.add(invoker3);
    List<Invoker<String>> fileredInvokers = router.route(invokers, URL.valueOf("consumer://" + NetUtils.getLocalHost() + "/com.foo.BarService"), new RpcInvocation());
    Assert.assertEquals(2, fileredInvokers.size());
    Assert.assertEquals(invoker2, fileredInvokers.get(0));
    Assert.assertEquals(invoker3, fileredInvokers.get(1));
}
 
开发者ID:flychao88,项目名称:dubbocloud,代码行数:16,代码来源:ConditionRouterTest.java

示例13: testRoute_ReturnFalse

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
@Test
public void testRoute_ReturnFalse(){
    Router router = new ConditionRouterFactory().getRouter(getRouteUrl("host = " + NetUtils.getLocalHost() + " => false"));
    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    invokers.add(new MockInvoker<String>());
    invokers.add(new MockInvoker<String>());
    invokers.add(new MockInvoker<String>());
    List<Invoker<String>> fileredInvokers = router.route(invokers, URL.valueOf("consumer://" + NetUtils.getLocalHost() + "/com.foo.BarService"), new RpcInvocation());
    Assert.assertEquals(0, fileredInvokers.size());
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:11,代码来源:ConditionRouterTest.java

示例14: testRoute_ReturnAll

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
@Test
public void testRoute_ReturnAll(){
    Router router = new ConditionRouterFactory().getRouter(getRouteUrl("host = " + NetUtils.getLocalHost() + " => " + " host = " + NetUtils.getLocalHost()));
    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    invokers.add(new MockInvoker<String>());
    invokers.add(new MockInvoker<String>());
    invokers.add(new MockInvoker<String>());
    List<Invoker<String>> fileredInvokers = router.route(invokers, URL.valueOf("consumer://" + NetUtils.getLocalHost() + "/com.foo.BarService"), new RpcInvocation());
    Assert.assertEquals(invokers, fileredInvokers);
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:11,代码来源:ConditionRouterTest.java

示例15: testRoute_HostFilter

import com.alibaba.dubbo.rpc.cluster.Router; //导入依赖的package包/类
@Test
public void testRoute_HostFilter(){
    Router router = new ConditionRouterFactory().getRouter(getRouteUrl("host = " + NetUtils.getLocalHost() + " => " + " host = " + NetUtils.getLocalHost()));
    List<Invoker<String>> invokers = new ArrayList<Invoker<String>>();
    Invoker<String> invoker1 = new MockInvoker<String>(URL.valueOf("dubbo://10.20.3.3:20880/com.foo.BarService")) ;
    Invoker<String> invoker2 = new MockInvoker<String>(URL.valueOf("dubbo://" + NetUtils.getLocalHost() + ":20880/com.foo.BarService")) ;
    Invoker<String> invoker3 = new MockInvoker<String>(URL.valueOf("dubbo://" + NetUtils.getLocalHost() + ":20880/com.foo.BarService")) ;
    invokers.add(invoker1);
    invokers.add(invoker2);
    invokers.add(invoker3);
    List<Invoker<String>> fileredInvokers = router.route(invokers, URL.valueOf("consumer://" + NetUtils.getLocalHost() + "/com.foo.BarService"), new RpcInvocation());
    Assert.assertEquals(2, fileredInvokers.size());
    Assert.assertEquals(invoker2, fileredInvokers.get(0));
    Assert.assertEquals(invoker3, fileredInvokers.get(1));
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:16,代码来源:ConditionRouterTest.java


注:本文中的com.alibaba.dubbo.rpc.cluster.Router类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。