@Override
    String getMethodName(Invoker invoker, Invocation invocation, String prefix) {
        return DubboUtils.getMethodResourceName(invoker, invocation, prefix);
    }
@Test
    public void testMethodFlowControlAsync() {

        Invocation invocation = DubboTestUtil.getDefaultMockInvocationOne();
        Invoker invoker = DubboTestUtil.getDefaultMockInvoker();

        when(invocation.getAttachment(ASYNC_KEY)).thenReturn(Boolean.TRUE.toString());
        initFlowRule(consumerFilter.getMethodName(invoker, invocation, null));
        invokeDubboRpc(false, invoker, invocation);
        invokeDubboRpc(false, invoker, invocation);

        Invocation invocation2 = DubboTestUtil.getDefaultMockInvocationTwo();
        Result result2 = invokeDubboRpc(false, invoker, invocation2);
        verifyInvocationStructureForCallFinish(invoker, invocation2);
        assertEquals("normal", result2.getValue());

        // the method of invocation should be blocked
        Result fallback = invokeDubboRpc(false, invoker, invocation);
        assertEquals("fallback", fallback.getValue());
        verifyInvocationStructureForCallFinish(invoker, invocation);

    }