com.ghp.request.annotation.RequestLimit Maven / Gradle / Ivy
package com.ghp.request.annotation;
import com.ghp.request.enums.RequestLimitStrategy;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author ghp
* @title
* @description
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RequestLimit {
/**
* 限流策略
*/
RequestLimitStrategy strategy() default RequestLimitStrategy.TOKEN_BUCKET;
/**
* 每秒可以访问的请求次数(这个本质是令牌的生成速率)
*/
int qps();
/**
* 限流后打印的异常信息
*/
String message() default "接口请求过于频繁,请稍后再试";
/**
* 桶的容量,默认是 10,也就是最大可处理的并发请求量是 10
* 桶越大能够处理的突发流量越多,具体请根据系统实际情况测试而定
* {@link com.ghp.request.limiter.impl.LeakyBucketLimiter} 和
* {@link com.ghp.request.limiter.impl.TokenBucketLimiter} 需要的参数
*/
int capacity() default 10;
/**
* 窗口大小,默认是 1000ms
* 窗口越大能够能够处理的突发流量越多,具体请根据系统实际情况测试而定
* {@link com.ghp.request.limiter.impl.FixedWindowCountLimiter}
* 和 {@link com.ghp.request.limiter.impl.SlideWindowCountLimiter} 需要的参数
*/
int interval() default 1000;
/**
* 滑块窗口大小,默认 100ms
* 滑块窗口越小,精度越高,流量越平滑,具体请根据系统实际情况测试而定
* {@link com.ghp.request.limiter.impl.SlideWindowCountLimiter} 需要的参数
*/
int slider() default 100;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy