Spring Scheduler停止为我的cron表达式工作

时间:2017-06-14 02:05:27

标签: spring scheduler

我有一个计划定期运行Spring Scheduler的方法,它工作正常,今天停止工作,没有错误。可能是什么原因?有没有其他方法可以使用Spring Scheduler定期调度任务,以确保无论何时执行该方法?

@Scheduled(cron="0 0/1 * * * ?")
public void executePollingFlows(){
    if(applicationConfig.isScheduleEnabled()) {
        for (long flowId : applicationConfig.getPollingFlowIds()) {
            flowService.executeFlow(flowId);
        }
        logger.info("Finished executing all polling flows at {}", new Date());
    }
}

1 个答案:

答案 0 :(得分:0)

如果作业无法完成其任务但您尝试一次又一次地运行它,则可能会出现Out of Memory异常。如果它是Out of Memory异常,您可以尝试创建ThreadPool并在每次运行中检查它。如果ThreadPool中没有足够的空间,则可以跳过此回合的任务。

有定期使用@Scheduled的替代方法。您可以使用以下命令更改@Scheduled注释:

@Scheduled(fixedRate=1000)

它仍然会每秒运行一次,如果需要,你可以添加initialDelay:

@Scheduled(initialDelay=1000, fixedRate=1000)

您可以在此处找到有关fixedRate,initialDelay和fixedDelay的更多详细信息: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html