通过自定义 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"/>