杏花怎酿酒 2022-08-14 18:08 采纳率: 55%
浏览 49
已结题

quartz 定时任务关闭(@GetMapping("/pause"))后, 再次传入cron表达式,不执行。只会按照第一次的cron表达式执行,怎么解决

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);
    }
    
}
  • 写回答

3条回答 默认 最新

  • 我啥都会 2022-08-14 19:05
    关注

    亲参考我的博客:http://t.csdn.cn/8R8sN

    评论

报告相同问题?

问题事件

  • 系统已结题 8月22日
  • 创建了问题 8月14日