У меня следующая проблема: в моем приложении есть несколько аннотаций @Scheduled
, определяющих задания cron, которые могут выполняться одновременно. Насколько я понял, стандартное поведение заключается в том, что каждое задание cron выполняется одним однопоточным TaskScheduler
, так что одновременно может выполняться только одно задание cron, а все остальные задания ставятся в очередь. Это было бы моим желаемым поведением, но я испытываю то, что задания выполняются параллельно.
После долгих поисков я обнаружил, что класс, лежащий в основе проверки работоспособности, определяет TaskScheduler
с несколькими потоками.
Зная это, я хотел бы сохранить библиотеку Healthcheck, используя ее многопоточную TaskScheduler
, и определить еще одну TaskScheduler
, которая является однопоточной и используется моей аннотацией @Scheduled
.
Я могу определить Bean, который использует однопоточный планировщик:
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(THREADS_COUNT);
return threadPoolTaskScheduler;
}
Но как можно привязать этот планировщик только к моим @Scheduled
аннотациям?