Usage
分为两种限流类型:local(Guava)和 redis。
Copy
<dependency>
<groupId>net.dragonshard</groupId>
<artifactId>dragonshard-limit-starter</artifactId>
<version>${latest.version}</version>
</dependency>
配置文件
Copy
limit:
enabled: true
type: local
aop:
scan-packages: net.dragonshard.sample.controller
exception-ignore: false
prefix: limit
配置项前缀dragonshard.limit
配置项 | 默认值 | 选项 | 描述 |
---|---|---|---|
enabled | true | true / false | 是否开启 |
type | local / redis | 其它值会抛异常,中断启动 | |
scan-packages | String | 扫描路径 | |
exception-ignore | false | true / false | 是否无视aop异常 |
prefix | DsfLimit | String | 前缀 |
在想要限流的方法上使用@Limit
注解。
// 每秒仅能有1次请求, 本地( Guava )限流时,limitPeriod 必须设置为1
@Limit(name = "limitLocalName", key = "limitLocalKey", limitPeriod = 1, limitCount = 1)
// 超限时返回异常
{
"code": "INTERNAL_SERVER_ERROR",
"exception": "net.dragonshard.dsf.limit.exception.RequestReachMaxLimitException",
"msg": "服务器异常,请稍后再试",
"show": true,
"status": 500,
"time": "2019-08-15T01:08:16.101"
}
注解参数
配置项 | 默认值 | 选项/类型 | 描述 |
---|---|---|---|
name | String | 资源的名字 | |
key | String | 资源的key | |
limitPeriod | Integer | 给定的时间段(秒),本地( Guava )限流时,必须设置为1 | |
limitCount | Integer | 最多的访问限制次数 |
配置文件中的 prefix 前缀,最终会和注解中的 name 和 key 一起组合成真正的 CompositeKey, 在源码中查看