我使用@Scheduled註釋來運行cron作業。調度工作一段時間,然後停止工作。 我會給我的代碼簡化的片段:Spring 4 @Scheduled停止工作
這是調度:
//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(TASK_EXECUTOR)
public ThreadPoolTaskExecutor createDefaultTaskExecutor() {
ThreadPoolTaskExecutor te = new ThreadPoolTaskExecutor();
te.setMaxPoolSize(15);
te.setCorePoolSize(15);
te.initialize();
return te;
}
Spring版本:
4.1.6.RELEASE
你在容器內部還是外部運行?另外,什麼版本的Java? – Brad
容器內部(基於Annotation的配置,我有@EnableScheduling @EnableAsync)。 Java版本8 – coolscitist
你讀過嗎? http://stackoverflow.com/q/17909404/206466 – xenoterracide