остановить выполнение по расписанию Spring, если оно зависает через некоторое фиксированное время
Я использовал Spring Framework'sScheduled
планировать свою работу каждые 5 минут, используя cron. Но иногда моя работа бесконечно ждет внешнего ресурса, и я не могу поставить там таймаут. Я не могу использоватьfixedDelay
так как предыдущий процесс иногда переходит в режим ожидания бесконечно, и мне приходится обновлять данные каждые 5 минут.
Поэтому я искал любой вариант в Spring FrameworkScheduled
чтобы остановить этот процесс / поток послеfixed-time
либо он работает успешно, либо нет.
Я нашел ниже настройки, которые инициализированыThreadPoolExecutor
с 120 секундами дляkeepAliveTime
который я положил в@Configuration
учебный класс. Может кто-нибудь сказать мне, будет ли эта работа, как я ожидал.
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
int coreThreads = 8;
int maxThreads = 20;
final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
coreThreads, maxThreads, 120L,
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()
);
threadPoolExecutor.allowCoreThreadTimeOut(true);
return threadPoolExecutor;
}