Spring ThreadPoolTask​​Executor具有固定的延迟?

时间:2018-11-08 09:53:56

标签: java spring multithreading spring-boot threadpoolexecutor

我有一个作业,该作业计划每小时运行一次,它使用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

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作。

  1. 配置TaskExecutor。您已经做到了。
  2. 编写要以计划方式调用的方法,并用@Scheduled进行注释。

     @Scheduled(fixedDelay = 3600000)
     void doSomething() {
     }
    

上面的代码每1小时触发一次。