Dubbo拦截器(Filter)的配置步骤

2021-10-22  本文已影响0人  寒沁
  1. 创建Filter类 DubboSentinelFilter,实现Filter接口( org.apache.dubbo.rpc.Filter ),在 DubboSentinelFilter 上添加注解 @Activate(group = CommonConstants.PROVIDER) 表示该拦截器用于rpc的提供者。示例如下
@Activate(group = CommonConstants.PROVIDER)
public class DubboSentinelFilter implements Filter {
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
            Result result = invoker.invoke(invocation);
            return result;
    }
}
  1. 在resources目录下创建文件夹 META-INF,在该文件夹下创建文件夹 dubbo,在dubbo下创建文件:org.apache.dubbo.rpc.Filter , 在文件下添加Filter配置
demoProviderFilter=com.demo.filter.DubboSentinelFilter
  1. 很重要的一个步骤,将org.apache.dubbo.rpc.Filter文件打包到classes.META-INF的目录下,如果maven的pom文件配置的不对,文件时打包不进去的,先看打包的成品


    image.png

    那在maven里面如何配置呢 ?在<build>标签下配置resource即可,如下

<build>
    <finalName>${artifactId}-1.0.0</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>
    <resources>
        <resource>
            <directory>src/main/resources/base</directory>
        </resource>
        <!-- 关键配置 -->
        <resource>
            <directory>src/main/resources/META-INF</directory>
            <targetPath>META-INF</targetPath>
        </resource>
    </resources>
</build>
  1. 在你需要该拦截器生效的地方,配上该filter即可,例如xml配置provider的方式
<dubbo:service interface="com.demo.service.TestProvider" ref="testProvider"
                   version="1.0.0" group="${dubbo.service.group}" filter="demoProviderFilter" timeout="2000" retries="0">
</dubbo:service>

以上四个步骤配置完成之后,该Filter就生效,快去测测看吧。

上一篇下一篇

猜你喜欢

热点阅读