Dubbo的全局Filter配置
前言:
之前也写过dubbo的filter的文章, 后来和同事也有过交流, 才发生自己对dubbo的filter的机制, 还是存在一些误解, 尤其是自定义filter的定位, 不是那么清晰. 本文主要是补充一下, 自定义的filter如何成为全局filter, 或者说, 它不需要在bean的定义申明中指定filter标签.
前文回顾:
1. Dubbo透传traceId/logid的一种思路
2. Dubbo的Filter链梳理---分组可见和顺序调整
3. Dubbo的Filter实战--整合Oval校验框架
案列:
比如自定义filter, 如下:
package com.test
public class StatFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
return invoker.invoke(invocation);
}
}
其需要做的额外工作如下:
在META-INF/dubbo目录下, 添加com.alibaba.dubbo.rpc.Filter文件, 其内容为
statFilter=com.test.StatFilter
而对于每个需要用到该filter的dubbo provider/consumer, 都需要在xml申明中添加filter标签, 比如:
<dubbo:reference id="echoService" check="false" interface="com.test.EchoService" filter="statFilter" />
对于具体的一个dubbo provider/consumer实例这种的配置, 绝对没问题, 问题是如果要作用所有的dubbo provider/consumer实例, 这样的copy/paste有点low.
全局配置:
其实实现全局配置, 非常的简单, 一种方式是通过额外的配置, 一种通过指定@Activate的group实现.
1. 额外的配置方式
以上文的案例为例, 在resource目录下, 添加dubbo.properties文件, 然后配置如下:
# 如果该filter要作用于为provider
dubbo.provider.filter=com.test.StatFilter
# 如果该filter要作用于为consumer
dubbo.consumer.filter=com.test.StatFilter
具体的目录结果如下:

2. 指定@Activate的group
这个方法, 就比较简单了, 而且也不需要额外的配置文件了
package com.test import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate; @Activate(
group = {Constants.PROVIDER, Constants.CONSUMER},
order = -2000
)
public class StatFilter implements Filter { @Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
return invoker.invoke(invocation);
} }
总结:
权当做笔记吧, 确实dubbo filter给了开发者很大自由度和空间.
Dubbo的全局Filter配置的更多相关文章
- Dubbo -- 系统学习 笔记 -- 配置
Dubbo -- 系统学习 笔记 -- 目录 配置 Xml配置 属性配置 注解配置 API配置 配置 Xml配置 配置项说明 :详细配置项,请参见:配置参考手册 API使用说明 : 如果不想使用Spr ...
- Dubbo -- 系统学习 笔记 -- 配置参考手册
Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...
- dubbo中的Filter链原理及应用
转载:https://www.jianshu.com/p/f390bb88574d filter在dubbo中的应用非常广泛,它可以对服务端.消费端的调用过程进行拦截,从而对dubbo进行功能上的扩展 ...
- web.xml之servlet与filter配置
servlet配置 一个完整的servlet配置分为两块,< servlet >块和< servlet-mapping >块 < servlet > <ser ...
- Filter 配置多个URL-PATTERN
Filter 配置多个URL-PATTERN 最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下 一.完全错误的方式 Java代码 <fil ...
- 【Struts2学习笔记(1)】Struts2中Action名称的搜索顺序和多个Action共享一个视图--全局result配置
一.Action名称的搜索顺序 1.获得请求路径的URI,比如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namesp ...
- dubbo的几种配置方式(转)
昨天刚接触公司dubbo,发现公司中项目里面的spring-dubbo-privider的dubbo中<dubbo:application name=""/>和< ...
- 【Devops】【docker】【CI/CD】docker启动的Jenkins容器 - 系统管理 - 全局工具配置 - 自动安装JDK、Maven、Git、Docker
本篇适用于jenkins是启动的docker容器,自动安装JDK Maven Git Docker等全局工具 ========================================= ...
- spring filter 配置
web xml <filter> <filter-name>DelegatingFilterProxy</filter-name> <filter ...
随机推荐
- Python events
Events不同线程之间同步对象 参数说明: # 实例化event对象 event = threading.Event() # 等待检测标志位被设定,标志位设置后就不阻塞了 # 客户机线程可以等待设置 ...
- 剑指offer(39)平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 题目分析 第一种方法: 正常思路,应该会获得节点的左子树和右子树的高度,然后比较高度差是否小于1. 可是这样有一个问题,就是节点重复遍历了,影 ...
- topcoder srm 590 div1 (max_flow_template)
problem1 link 对于每一个,找到其在目标串中的位置,判断能不能移动即可. problem2 link 如果最后的$limit$为$11=(1011)_{2}$,那么可以分别计算值为$(10 ...
- Learning-Python【2】:简单介绍Python基本数据类型及程序交互
人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但在某些方面很笨,你得明确的告诉它,“1”是数字,“我”是文字.否则计算机是分不清的.因此,在每个编程语言中都会有数据类型的概 ...
- 查漏补缺之——Java多线程
复习面试题中遇到锁的内容当时大一学习的时候感觉懵懂,现在重新复习一下. 1.1多线程 1.1.1线程 1.什么是线程 线程是程序执行的一条路径,一个进程中包含多条进程 2.并行与并发 并行是两个任务同 ...
- POI 导入excel 代码记录 方便以后粘贴
import java.io.FileInputStream; import java.io.InputStream; import javax.annotation.Resource; import ...
- 巧用同步请求处理react页面刷新问题
很多时候,我们会遇到这种情况,组件加载需要请求后台数据,然后填充组件.那么我们一般会这样处理:如[使用异步请求的方式]代码: 加载组价的时候,未获得数据,render一个空的div: 然后异步请求数据 ...
- vue extend 的基本使用
vue.extend 局部注册 的应用2 请注意,extend创建的是一个组件构造器,而不是一个具体的组件实例.所以他不能直接在new Vue中这样使用: new Vue({components: f ...
- CentOs系统设置python版本
一.针对当前终端生效 最近云服务器安装了centos7系统,python默认版本是2.7.5,但是习惯用anaconda3, 安装anaconda3之后将系统默认python版本更改为python3. ...
- xml字符串,xml对象,数组之间的相互转化
<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller { pu ...