@Override
    public void notify(BitList<Invoker<T>> invokers) {
        BitList<Invoker<T>> invokerList = invokers == null ? BitList.emptyList() : invokers;
        this.invokerList = invokerList.clone();
        registerAppRule(invokerList);
        computeSubset(this.meshRuleCache.getAppToVDGroup());
    }
@Test
    void testNotify() {
        StandardMeshRuleRouter<Object> meshRuleRouter = new StandardMeshRuleRouter<>(url);
        meshRuleRouter.notify(null);
        assertEquals(0, meshRuleRouter.getRemoteAppName().size());

        BitList<Invoker<Object>> invokers =
                new BitList<>(Arrays.asList(createInvoker(""), createInvoker("unknown"), createInvoker("app1")));

        meshRuleRouter.notify(invokers);

        assertEquals(1, meshRuleRouter.getRemoteAppName().size());
        assertTrue(meshRuleRouter.getRemoteAppName().contains("app1"));
        assertEquals(invokers, meshRuleRouter.getInvokerList());

        verify(meshRuleManager, times(1)).register("app1", meshRuleRouter);

        invokers = new BitList<>(Arrays.asList(createInvoker("unknown"), createInvoker("app2")));
        meshRuleRouter.notify(invokers);
        verify(meshRuleManager, times(1)).register("app2", meshRuleRouter);
        verify(meshRuleManager, times(1)).unregister("app1", meshRuleRouter);
        assertEquals(invokers, meshRuleRouter.getInvokerList());

        meshRuleRouter.stop();
        verify(meshRuleManager, times(1)).unregister("app2", meshRuleRouter);
    }