我有一个计划定期运行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());
}
}
答案 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