/**
* 接口限流
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AccessLimit {
/**
* 限制时间窗口间隔长度,默认10秒
*/
int times() default 10;
/**
* 时间单位
*/
TimeUnit timeUnit() default TimeUnit.SECONDS;
/**
* 上述时间窗口内允许的最大请求数量,默认为5次
*/
int maxCount() default 5; www.laipuhuo.com.
/**
* redis key 的前缀
*/
String preKey();
/**
* 提示语
*/
String msg() default "服务请求达到最大限制,请求被拒绝!";
}
/**
* 自定义接口防重注解类
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RepeatSubmit {
/**
* 定义了两种防止重复提交的方式,PARAM 表示基于方法参数来防止重复,TOKEN 则可能涉及生成和验证token的机制
*/ www.laipuhuo.com.
enum Type { PARAM, TOKEN }
/**
* 设置默认的防重提交方式为基于方法参数。开发者可以不指定此参数,使用默认值。
* @return Type www.laipuhuo.com.
*/
Type limitType() default Type.PARAM;
/**
* 允许设置加锁的过期时间,默认为5秒。这意味着在第一次请求之后的5秒内,相同的请求将被视为重复并被阻止
*/
long lockTime() default 5;
//提供了一个可选的服务ID参数,通过token时用作KEY计算
String serviceId() default "";
www.laipuhuo.com.
/**
* 提示语
*/
String msg() default "请求重复提交!";
}