通过自定义 Filter,可以在 dubbo 调用链中加入特定的逻辑,比如埋点分析调用链。

1. 新建 Filter 类

// @Activate(group = {Constants.CONSUMER})
public class MyFilter implements Filter {
    public Result invoke(Invoker<?> invoker, Invocation invocation)
            throws RpcException {
        System.out.println("开始调用 MyFilter");
        Result result = invoker.invoke(invocation);
        System.out.println("结束调用 MyFilter");
        return result;
    }
}

如果加上 @Activate 注解,则该 filter 会成为默认的

 

2. 修改 /META-INF/dubbo/internal/com.alibaba.dubbo.rpc.Filter 文件

增加一行:

myFilter=com.zhang.MyFilter

 

3. 配置 filter 参数

<dubbo:reference id="hello" interface="com.zhang.HelloService" proxy="jdk" retries="0" filter="myFilter"/>

 

posted on 2018-06-04 17:30  偶尔发呆  阅读(3214)  评论(0编辑  收藏  举报