springboot接口限流操作

springboot接口限流操作

一、用guava包

1.1依赖引入

java 复制代码
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>33.5.0-jre</version>
			<scope>compile</scope>
		</dependency>

1.2 限流配置注册

java 复制代码
@Configuration
public class RateLimiterConfig {

    // 每秒允许的请求数
    private static final double RATE = 3.0;

    // 突发流量处理能力(允许的突发请求数)
    private static final int BURST = 5;

    @Bean
    public RateLimiter rateLimiter() {
        // 创建限流器,RATE为每秒允许的请求数
        RateLimiter rateLimiter = RateLimiter.create(RATE);
        return rateLimiter;
    }
}

1.3 接口拦截器配置

java 复制代码
@Component
public class RateLimitInterceptor implements HandlerInterceptor {
    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private RateLimiter rateLimiter;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 尝试获取令牌
        boolean acquired = rateLimiter.tryAcquire();
        logger.info("RateLimitInterceptor:{}",acquired);
        if (!acquired) {
            // 如果没有令牌,拒绝请求
            response.setStatus(429); // 429 Too Many Requests
            response.getWriter().write("Too many requests. Please try again later.");
            return false;
        }
        return true;
    }

}

1.2 mvc注册拦截器

java 复制代码
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private RateLimitInterceptor rateLimitInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(rateLimitInterceptor);
    }

}

二、用redis接口限流

2.1

相关推荐
吴文周7 小时前
告别重复劳动:一套插件让 AI 替你写代码、修Bug、做测试、上生产
前端·后端·ai编程
Cyeam7 小时前
Roadbook CSV:一行 CSV 秒变高德地图路书
后端·开源·aigc
yaoxin5211238 小时前
390. Java IO API - WatchDir 示例
java·前端·python
懒狗小前端8 小时前
做了一个 codex 的中文文档网站,做的不好可以随便喷
前端·后端
Halo_tjn9 小时前
Java 基于字符串相关知识点
java·开发语言·算法
梦想的颜色9 小时前
java 利用redis来限制用户频繁点击
java·开发语言
Eric_见嘉10 小时前
在职前端 Agent 配置分享
前端·后端·agent
Ares-Wang10 小时前
Flask》》 Flask-OpenID 认证、 OpenID Connect (OIDC)
后端·python·flask
掘金码甲哥10 小时前
这篇优雅安装k8s集群的姿势,请务必投喂给AI智能体, 包装包活的那种!
后端
PH = 711 小时前
OverlayFS联合文件系统使用示例
java·linux·服务器