要限制Spring Boot接口的并發(fā)數(shù),可以使用線程池來(lái)控制并發(fā)訪問??梢酝ㄟ^配置Spring Boot的線程池來(lái)限制并發(fā)數(shù)。
# 設(shè)置核心線程數(shù)
server.tomcat.max-threads=50
# 設(shè)置最大線程數(shù)
server.tomcat.max-connections=200
@Configuration
public class ThreadPoolConfig {
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 設(shè)置核心線程數(shù)
executor.setCorePoolSize(50);
// 設(shè)置最大線程數(shù)
executor.setMaxPoolSize(200);
// 設(shè)置隊(duì)列大小
executor.setQueueCapacity(100);
// 設(shè)置線程池中線程的名稱前綴
executor.setThreadNamePrefix("my-thread-pool-");
// 設(shè)置線程池中線程的空閑時(shí)間,超過此時(shí)間會(huì)被回收
executor.setKeepAliveSeconds(60);
// 設(shè)置線程池中的等待時(shí)間
executor.setWaitForTasksToCompleteOnShutdown(true);
// 設(shè)置線程池中的等待時(shí)間
executor.setAwaitTerminationSeconds(60);
return executor;
}
}
@RestController
public class MyController {
@Autowired
private TaskExecutor taskExecutor;
@GetMapping("/my-api")
@Async("taskExecutor")
public void myApi() {
// 接口邏輯
}
}
通過以上配置,可以限制Spring Boot接口的并發(fā)數(shù)。