一、介绍

1 说明

1 Dubbo调用时拦截操作 与很多框架一样,Dubbo也存在拦截(过滤)机制,可以通过该机制在执行目标程序前后执行我们指定 的代码。

2 Dubbo的Filter机制,是专门为服务提供方和服务消费方调用过程进行拦截设计的,每次远程方法执 行,该拦截都会被执行。

3 这样就为开发者提供了非常方便的扩展性,比如为dubbo接口实现ip白名单功 能、监控功能 、日志记录等。

2 步骤

1 实现 org.apache.dubbo.rpc.Filter 接口

2 使用 org.apache.dubbo.common.extension.Activate 接口进行对类进行注册 通过group 可以 指定生产端 消费端

3 建议:一般类似于这样的功能都是单独开发依赖的,所以再使用方的项目中只需要引入依赖,在调用接 口时,该方法便会自动拦截。

二、demo

1 实现 实现统计Filter

2 新建module

image.png

3 引入依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.dubbo</groupId>
  4. <artifactId>dubbo</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.projectlombok</groupId>
  8. <artifactId>lombok</artifactId>
  9. <version>1.18.20</version>
  10. </dependency>
  11. </dependencies>

4 Filter 实现

image.png

5 配置文件

image.png

6 消费者引入 时间Filter依赖

  1. <dependency>
  2. <groupId>com.flame</groupId>
  3. <artifactId>dubb0-filter</artifactId>
  4. <version>1.0-SNAPSHOT</version>
  5. </dependency>

7 测试消费者

image.png

8 提供者 依赖引入

  1. <dependency>
  2. <groupId>com.flame</groupId>
  3. <artifactId>dubb0-filter</artifactId>
  4. <version>1.0-SNAPSHOT</version>
  5. </dependency>

9 测试

image.png