- 创建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;
}
}
- 在resources目录下创建文件夹 META-INF,在该文件夹下创建文件夹 dubbo,在dubbo下创建文件:org.apache.dubbo.rpc.Filter , 在文件下添加Filter配置
demoProviderFilter=com.demo.filter.DubboSentinelFilter
-
很重要的一个步骤,将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>
- 在你需要该拦截器生效的地方,配上该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就生效,快去测测看吧。
网友评论