Quartz current executing job when Tomcat is killed

前端 未结 2 1676
时光取名叫无心
时光取名叫无心 2020-12-17 00:12

Something i am not clear on. Say i have jobs randomly scheduled throughout the day and each job takes 30 minutes to run. Say i have five of these jobs running and Tomcat get

相关标签:
2条回答
  • 2020-12-17 00:22

    Short answer, by default, currently running Jobs are considered fired and are not recovered

    ..but you can set requestRecovery property when you build a Job (JobDetail) to tell Quartz to recover that running Jobs in case of crash a.k.a. "hard shutdown".

    Quoting the official documentation here on the bottom of the page:

    RequestsRecovery - if a job "requests recovery", and it is executing during the time of a 'hard shutdown' of the scheduler (i.e. the process it is running within crashes, or the machine is shut off), then it is re-executed when the scheduler is started again. In this case, the JobExecutionContext.isRecovering() method will return true.

    So you can do for example:

    import static org.quartz.JobBuilder.*;
    
    ...
    
    JobDetail job = newJob(MyJob.class)
               .withIdentity("myJob", "group1")
               .requestRecovery(true) //This is the guy!
               .build();
    
    ...
    
    0 讨论(0)
  • 2020-12-17 00:27

    Tomcat does not care about your job. It is your task to terminate the job correctly in your webapp when it is shut down.

    0 讨论(0)
提交回复
热议问题