写在前面
当前WEB架构中,很多同学都知道springMvc框架的拦截器,可以用来做用户登录鉴权,日志记录等
同样在我们微服务架构中,如RPC Dubbo框架,也有类似拦截器,这里直接上干货,演示一下使用姿势。

实战姿势
1 编写自定义拦截器类DubboFilter 并继承com.alibaba.dubbo.rpc.Filter
@Slf4j
@Activate(group = {Constants.PROVIDER})
public class DubboFilter implements Filter {
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
log.info("dubbo入参,InterfaceName={},MethodName={},Parameter={}", invocation.getInvoker().getInterface().getName(), invocation.getMethodName(), invocation.getArguments());
Result result = invoker.invoke(invocation);
System.out.println(result);
return result;
}
}
2 创建META-INF/dubbo/com.alibaba.dubbo.rpc 文件并将DubboFilter配置写入
dubboFilter=com.yh.test.nacos.filter.DubboFilter 如图

3 开启拦截器,开启的方式有两种
3.1 在我们的DubboFilter类上添加注解@Activate(group = {Constants.PROVIDER})
3.2 或者在相关spring-dubbo.xml配置中 增加配置<dubbo:provider filter="dubboFilter"/>


实战演示效果
假设provider提供了一个add方法,用来计算两数之和, 然后我们通过拦截器来打印,consumer调用时传入的参数

源码下载
Dubbo Filter 拦截器基础使用姿势源码下载