我不清楚。假设我整天随机安排工作,每个工作需要30分钟才能运行。假设我有五个作业正在运行,Tomcat被杀死。当我使用应用程序启动Tomcat时,作业会重新启动吗?或者当前正在运行的作业是否已经被触发而丢失了?
简短回答,默认情况下,当前正在运行的作业被视为已触发并且无法恢复
.. 但 您可以在构建Job(JobDetail)时设置 requestRecovery 属性,以告诉Quartz在发生崩溃(也称为“硬关机”)的情况下恢复正在运行的Jobs。
引用官方文档这里在页面的底部:
RequestsRecovery- 如果作业“请求恢复”,并且在调度程序的“硬关闭”期间正在执行(即,正在崩溃中运行的进程,或者计算机已关闭),则将重新执行该作业再次启动调度程序时。在这种情况下,JobExecutionContext.isRecovering()方法将返回true。
因此,您可以例如:
import static org.quartz.JobBuilder.*; ... JobDetail job = newJob(MyJob.class) .withIdentity("myJob", "group1") .requestRecovery(true) //This is the guy! .build(); ...