interrompe a execução agendada do Spring se travar após algum tempo fixo
Eu usei o Spring FrameworkScheduled
para agendar meu trabalho para ser executado a cada 5 minutos usando cron. Mas, em algum momento, meu trabalho aguarda infinitamente por um recurso externo e não posso colocar o tempo limite lá. Não posso usarfixedDelay
como o processo anterior, em algum momento, entra no modo de espera infinitamente e eu tenho que atualizar os dados a cada 5 minutos.
Então, eu estava procurando qualquer opção no Spring FrameworkScheduled
para interromper esse processo / thread após umfixed-time
seja executado com sucesso ou não.
Encontrei abaixo a configuração que inicializouThreadPoolExecutor
com 120 segundos parakeepAliveTime
que eu coloquei@Configuration
classe. Alguém pode me dizer que isso funcionará como eu esperava.
@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;
}