Quartz 框架接收 cron表达式后,没有按 cron表达式的任务时间执行而是 每秒执行任务
如何改修改
controller
@PostMapping("startBackup")
public ResponseData start(@RequestParam("somethingToUse") String somethingToUse,
@RequestParam("cron")String cron
){
System.out.println("=================开始执行=================");
try{
jobService.startOrResumeJobBackup(somethingToUse,cron);
} catch (SchedulerException e) {
e.printStackTrace();
return new ErrorResponseData(403,"失败");
}
return new SuccessResponseData(200, "成功",true);
}
job
public class JobBackup extends QuartzJobBean {
private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) {
Date now = new Date();
String currentData = sdf.format(now);
System.out.println("执行备份脚本定时任务"+currentData);
}
}
@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);
}
}
传入参数
传入所有cron都是按秒执行