@Override
    public Object handle(String targetService, List<Object> invokers, Object invocation, Map<String, String> queryMap,
            String serviceInterface) {
        if (!shouldHandle(invokers)) {
            return invokers;
        }
        List<Object> targetInvokers;
        if (routerConfig.isUseRequestRouter()) {
            targetInvokers = getTargetInvokersByRequest(targetService, invokers, invocation);
        } else {
            targetInvokers = getTargetInvokersByRules(invokers, invocation, queryMap, targetService, serviceInterface);
        }
        return super.handle(targetService, targetInvokers, invocation, queryMap, serviceInterface);
    }
@Test
    public void testGetMissMatchInvokers() {
        // initialize the routing rule
        RuleInitializationUtils.initFlowMatchRule();
        List<Object> invokers = new ArrayList<>();
        ApacheInvoker<Object> invoker1 = new ApacheInvoker<>("1.0.0");
        invokers.add(invoker1);
        ApacheInvoker<Object> invoker2 = new ApacheInvoker<>("1.0.1");
        invokers.add(invoker2);
        Invocation invocation = new ApacheInvocation();
        invocation.setAttachment("bar", "bar2");
        Map<String, String> queryMap = new HashMap<>();
        queryMap.put("side", "consumer");
        queryMap.put("group", "fooGroup");
        queryMap.put("version", "0.0.1");
        queryMap.put("interface", "io.sermant.foo.FooTest");
        DubboCache.INSTANCE.putApplication("io.sermant.foo.FooTest", "foo");
        List<Object> targetInvokers = (List<Object>) flowRouteHandler.handle(
                DubboCache.INSTANCE.getApplication("io.sermant.foo.FooTest")
                , invokers, invocation, queryMap, "io.sermant.foo.FooTest");
        Assert.assertEquals(1, targetInvokers.size());
        Assert.assertEquals(invoker1, targetInvokers.get(0));
        ConfigCache.getLabel(RouterConstant.DUBBO_CACHE_NAME).resetRouteRule(Collections.emptyMap());
    }