SpringBoot整合Quartz之动态控制任务(暂停,启动,修改执行时间)

SpringBoot整合 Quartz 篇请移步 https://blog.csdn.net/yali_aini/article/details/85287074

此篇文章讲述如何动态控制 Quartz 定时任务。

其实很简单,就是使用自带的  Scheduler 类。

上配置类:


/**
 * 配置类
 */
@Configuration
public class QuartzConfig {
    
    //省略 job,trigger 注入....

    // 定义 任务,传入 triggers
    @Bean(name = "sch")
    public SchedulerFactoryBean scheduler1(Trigger ... triggers){
        SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
        // 设置 triggers
        factoryBean.setTriggers( triggers );
        // 自动运行
        factoryBean.setAutoStartup(true);

        return factoryBean;
    }

}

省略 job,trigger 注入,需要看的请移步SpringBoot整合 Quartz 篇 https://blog.csdn.net/yali_aini/article/details/85287074

这里我模拟在web项目中通过 url 请求来控制:

1.注入  Scheduler 对象

    @Autowired
    @Qualifier("sch")
    private Scheduler scheduler;

2.动态关闭任务:

    @RequestMapping("/pause")
    @ResponseBody
    public String pause() throws Exception {

        System.out.println( scheduler );

        JobKey key = new JobKey("job1");
        scheduler.pauseJob(key);

        return "pause";
    }

3.动态启动任务:

    @RequestMapping("/start")
    @ResponseBody
    public String start() throws Exception {

        System.out.println( scheduler );

        JobKey key = new JobKey("job1");
        scheduler.resumeJob(key);

        return "start";
    }

4.动态修改任务执行的时间

    @RequestMapping("/trigger")
    @ResponseBody
    public String trigger() throws Exception {
        // 获取任务
        JobKey jobKey = new JobKey("job1");
        // 获取 jobDetail
        JobDetail jobDetail = scheduler.getJobDetail(jobKey);
        // 生成 trigger
        Trigger trigger = TriggerBuilder
                .newTrigger()
                .withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?"))
                .build();
        // 删除任务,不删除会报错。报任务已存在
        scheduler.deleteJob(jobKey);
        // 启动任务
        scheduler.scheduleJob(jobDetail, trigger);

        return "trigger";
    }

更多方法请参考 quartz 官方文档:http://www.quartz-scheduler.org/api/2.2.1/index.html

你可能感兴趣的:(quartz,springboot,SpringBoot菜鸟教程)