我有一个作业,该作业计划每小时运行一次,它使用Spring ThreadPoolTaskExecutor
bean向外部API同时发起调用(每小时接近100个调用)。
@Bean
public TaskExecutor getExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(10);
threadPoolTaskExecutor.setMaxPoolSize(20);
return threadPoolTaskExecutor;
}
现在,外部API限制了请求的数量,并允许每30秒发出一个请求。我必须等待30秒钟才能拨打电话。
在这种情况下,我发现使用ThreadPoolTaskExecutor
不再有用。具有固定延迟配置的ThreadPoolTaskScheduler
是否可以工作?
处理此类API节流的最佳方法是什么?请帮助
如果有帮助,我正在使用Java 8,Spring Boot 2.0.1
答案 0 :(得分:0)
您可以执行以下操作。
TaskExecutor
。您已经做到了。编写要以计划方式调用的方法,并用@Scheduled
进行注释。
@Scheduled(fixedDelay = 3600000)
void doSomething() {
}
上面的代码每1小时触发一次。