java中如何限制时间段内某方法的调用次数?


项目中甲方领导担心对某系统某个接口的调用次数过多,导致系统宕掉,希望在本项目中约束某个时间段内调用接口的次数,比如每分钟不能超过100次。请问各位大牛有什么思路?

补充:接口是使用HTTP方式,向某个其他应用提供的地址POST数据,在自己的应用中进行限制,比如每分钟100次以内。

java 算法

给力啊老湿 11 years, 8 months ago

使用Proxy模式
例如需要限制方法:

   
  public void play();
 

通用限制调用/分钟类:

   
  abstract class LimitInvokingInMinute{
  
public LimitInvokingInMinute(int limit){
this.limit=limit;
}
int limit;
void execute(){
//TODO:限制访问次数/每分钟逻辑

invoking();
}
abstract void invoking();
}

针对方法是用:

   
  LimitInvokingInMinute limitInvoking=new LimitInvokingInMinute(){
  
public void invoking(){
play();//调用被限制方法
}

}

使用的话仅需要:

   
  limitInvoking.execute();
 

即可

eelmon answered 11 years, 8 months ago

Your Answer