Dubbo源码分析----过滤器之ExecuteLimitFilter

本文分析了Dubbo的ExecuteLimitFilter,它用于实现并发控制。例如,限制服务方法的并发执行不超过10个,或者针对特定服务方法设置限制。通过源码探索,我们发现Filter仅在服务端生效,并依赖于url参数executes。在invoke方法中,检查配置的执行数量并对比当前执行数量,以判断是否超出限制。获取executes值的过程涉及methodName+executes或直接通过getParameter(key)。当数量合法时,允许正常执行方法。
摘要由CSDN通过智能技术生成

ExecuteLimitFilter主要用来做并发控制

例子1:限制服务 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10个,具体配置如下

<dubbo:service interface="com.foo.BarService" executes="10" />

例子2:限制 com.foo.BarService 的 sayHello 方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:

<dubbo:service interface="com.foo.BarService">
    <dubbo:method name="sayHello" executes="10" />
</dubbo:service>

以上两个例子来copy自dubbo官网,下面通过源码分析Filter如何处理,先看下类的定义

@Activate(group = Constants.PROVIDER, value = Constants.EXECUTES_KEY)
public class ExecuteLimitFilter implements Filter {
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值