SpringBoot 外部接口限速:使用 Guava RateLimiter 实现并发控制
可以使用 Spring Boot 中的限流框架来实现对外部接口的限速。
一种常见的限流框架是 Guava 的 RateLimiter,它可以很容易地实现对并发调用的限速。
首先,在 pom.xml 文件中添加 Guava 的依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
然后,在 Spring Boot 的配置类中创建一个 RateLimiter 的 Bean:
import com.google.common.util.concurrent.RateLimiter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RateLimiterConfiguration {
@Bean
public RateLimiter rateLimiter() {
return RateLimiter.create(10.0); // 每秒限制10次
}
}
接下来,在需要限速的方法中,注入 RateLimiter,并使用 tryAcquire 方法进行限速判断:
import com.google.common.util.concurrent.RateLimiter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Autowired
private RateLimiter rateLimiter;
@GetMapping("/api")
public String myApi() {
if (rateLimiter.tryAcquire()) {
// 通过限速
return 'Hello World';
} else {
// 超过限速
return 'Rate limit exceeded';
}
}
}
这样,每次调用 myApi 方法时,会先判断是否超过限速,如果超过则返回'Rate limit exceeded',否则返回实际的业务逻辑结果。
原文地址: https://www.cveoy.top/t/topic/pbGm 著作权归作者所有。请勿转载和采集!