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