Я использую аннотацию @Scheduled для запуска задания cron. Расписание работает какое-то время, а потом перестает работать. Приведу упрощенные фрагменты своего кода:
Это планировщик:
//org.springframework.scheduling.annotation.Scheduled
@Scheduled("*/30 * * * * *")
public void performTask() {
logger.info("Starting agent");
getAgentAsyncTask().execute();
logger.info("Ending agent");
}
Это задача, которую выполняет планировщик
//org.springframework.scheduling.annotation.Async
@Async(TASK_EXECUTOR)
@Override
public void execute() {
logger.info("Starting task");
//send some rest requests
logger.info("Ending task");
}
Оба: «Начальный агент» и «Конечный агент» регистрируются одинаковое количество раз. Таким образом, каждое планирование заканчивается должным образом.
Оба: «Начало задачи» и «Завершение задачи» регистрируются одинаковое количество раз. Так что, безусловно, «задача» не блокирует вещи.
Но он просто перестает регистрироваться через некоторое время. В чем может быть проблема?
Здесь TASK_EXECUTOR — это следующий bean-компонент:
@Bean(TASK_EXECUTOR)
public ThreadPoolTaskExecutor createDefaultTaskExecutor() {
ThreadPoolTaskExecutor te = new ThreadPoolTaskExecutor();
te.setMaxPoolSize(15);
te.setCorePoolSize(15);
te.initialize();
return te;
}
Весенняя версия:
4.1.6.ВЫПУСК