Spring ThreadPoolTaskExecutor с фиксированной задержкой? - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть задание, которое по расписанию запускается каждый час и использует bean-компонент Spring ThreadPoolTaskExecutor для одновременных вызовов (около 100 вызовов в час) на внешний API.

@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 голосов
/ 08 ноября 2018

Вы можете сделать следующее.

  1. Настройка TaskExecutor. Вы уже сделали это.
  2. Напишите метод, который вы хотите вызывать по расписанию, и аннотируйте с помощью @Scheduled.

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

Код выше будет срабатывать каждые 1 час.

...