Documentation

A good document is like an intriguing story.

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, 在源码中查看