目录
三、定义了一个自定义注解CustomRateLimiter,用于进行接口限流。
五、源码地址:https://download.csdn.net/download/weixin_44148524/87789794
一、简介
本文可以简单学习到:
- Springboot结合自定义注解的使用
- Springboot结合aop使用
- 接口限流思路
二、maven依赖
aop依赖和guava依赖用作限流
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
三、定义了一个自定义注解CustomRateLimiter,用于进行接口限流。
@Target(ElementType.METHOD)表示该注解可以用于方法上。
@Retention(RetentionPolicy.RUNTIME)表示该注解在运行时保留。
注解中包含以下属性:
value()表示获取许可证数量,默认为0,表示不限制。
qps()表示每秒生成的令牌数量,默认为0,表示不限制。
timeout()表示超时时长,默认为0,表示不超时。
timeUnit()表示超时时间单位,默认为毫秒。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomRateLimiter {
int NOT_LIMITED = 0;
/**
* 获取许可证数量
*/
double value() default NOT_LIMITED;
/**
* qps每秒生成的令牌数量(请求数)
*/
double qps() default NOT_LIMITED;
/**
* 超时时长
*/
int timeout() default 0;