Java 弹簧集成节流
有人知道spring集成框架中是否已经有一个组件来处理节流吗 从本质上说,我所寻找的是类似的东西:Java 弹簧集成节流,java,spring,spring-integration,Java,Spring,Spring Integration,有人知道spring集成框架中是否已经有一个组件来处理节流吗 从本质上说,我所寻找的是类似的东西: import com.google.common.util.concurrent.RateLimiter; import java.util.Timer; import java.util.TimerTask; class Throttler extends TimerTask{ final RateLimiter rateLimiter; Timer timer; Long rat
import com.google.common.util.concurrent.RateLimiter;
import java.util.Timer;
import java.util.TimerTask;
class Throttler extends TimerTask{
final RateLimiter rateLimiter;
Timer timer;
Long rate;
Long dailyLimit;
Long dailyCount;
Long hourlyLimit;
Long hourlyCount;
Long resetTime;
public Throtteler(){
rateLimiter = RateLimiter.create(rate);
timer = new Timer();
timer.schedule(this, 60000);
}
public void run() {
synchronize(this){
hourlyCount = 0;
resetTime = System.currentTimeMiilis();
//if midnight reset daily counter
}
}
public boolean throttled(Object obj){
rateLimiter.acquire();
if(hourlyCount < hourlyLimit && dailyCount < dailyLimit){
hourlyCount++;
}else{
audit();
// evaluate rules for throttled message
// queue for hourly throttle?
// return error for daily throttle?
}
}
}
import com.google.common.util.concurrent.RateLimiter;
导入java.util.Timer;
导入java.util.TimerTask;
类节流器扩展TimerTask{
最终费率限制器费率限制器;
定时器;
长期利率;
每日长限;
龙日山;
长小时极限;
长小时计数;
时间长;
公共投票者(){
rateLimiter=rateLimiter.create(速率);
定时器=新定时器();
时间表(本,60000);
}
公开募捐{
同步(此){
小时计数=0;
resetTime=System.currentTimeMiilis();
//如果午夜重置每日计数器
}
}
公共布尔值已限制(对象obj){
rateLimiter.acquire();
if(hourlyCount
速率限制器将限制每秒事务,每日和每小时事务由此对象跟踪,并且此对象保存在使用我的服务的每个租户的持久缓存中。Google search:几乎,但不是。我没有寻找并发限制,这是我在每次Google搜索中发现的。并发性不同于多租户,多租户是我想要的。此外,费率限制器确实提供小时费率,这很有用,但仅限于小时费率。最后,它不是spring集成代码库的一部分。我正在寻找一个节流器的“Spring Integration”实现,如果Spring Integration中没有节流器,那么我将编写自己的节流器。老实说,我不知道你的意思,所以如果你提出一个JIRA问题()并在那里分享更多信息,那将是一件好事。最终,您将能够为框架提供最终解决方案。谢谢