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