我使用@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