quartz 定时任务关闭(@GetMapping("/pause"))后,
再次传入cron表达式,不执行。只会按照第一次的cron表达式执行,怎么解决
// controller
@PostMapping("start")
public ResponseData start(@RequestParam("somethingToUse") String somethingToUse,
@RequestParam("cron")String cron
){
jobService.startOrResumeJobBackup(somethingToUse,cron);
@GetMapping("/pause")
public ResponseData pauseBackup() {
jobService.pauseJobBackup();
}
// service
@Service
public class JobService {
@Autowired
Scheduler scheduler;
static TriggerKey task1 = new TriggerKey("task1");
public void startOrResumeJobBackup(String somethingToUse,String cron) throws SchedulerException {
if (scheduler.getTriggerState(task1).toString() == "PAUSED") {
scheduler.resumeTrigger(task1);
} else {
JobDetail jobDetail = JobBuilder.newJob(JobBackup.class)
.usingJobData("somethingToUse",somethingToUse)
.build();
Trigger trigger= TriggerBuilder.newTrigger()
.withIdentity(task1)
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(cron))
.build();
scheduler.scheduleJob(jobDetail,trigger);
}
}
/**
* 关闭
*/
public void pauseJobBackup() throws SchedulerException{
scheduler.pauseTrigger(task1);
}
// job
public class JobBackup extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) {
System.out.println("执行备份脚本定时任务"+currentData);
}
}