Quartz 按组删除任务

Quartz按组删除任务

如题所示,本篇的主要内容是介绍如何对quratz的任务按照组进行删除。
这个功能其实很简单,所以直接上代码。

删除代码就是if中的几行代码

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.matchers.GroupMatcher;

public class QuartzDemo {

    public static void main(String[] args) {
        try {
            JobDetail job11 = JobBuilder.newJob(JobOne.class).withIdentity("11", "group_1").build();
            JobDetail job12 = JobBuilder.newJob(JobOne.class).withIdentity("12", "group_1").build();
            JobDetail job21 = JobBuilder.newJob(JobTwo.class).withIdentity("21", "group_2").build();
            JobDetail job22 = JobBuilder.newJob(JobTwo.class).withIdentity("22", "group_2").build();
            JobDetail job31 = JobBuilder.newJob(JobThree.class).withIdentity("31", "group_3").build();
            JobDetail job32 = JobBuilder.newJob(JobThree.class).withIdentity("32", "group_3").build();

            Trigger trigger11 = TriggerBuilder.newTrigger().withIdentity("trigger11", "group_1").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
            Trigger trigger12 = TriggerBuilder.newTrigger().withIdentity("trigger12", "group_1").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
            Trigger trigger21 = TriggerBuilder.newTrigger().withIdentity("trigger21", "group_2").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
            Trigger trigger22 = TriggerBuilder.newTrigger().withIdentity("trigger22", "group_2").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
            Trigger trigger31 = TriggerBuilder.newTrigger().withIdentity("trigger31", "group_3").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
            Trigger trigger32 = TriggerBuilder.newTrigger().withIdentity("trigger32", "group_3").startNow()
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();

            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            scheduler.scheduleJob(job11, trigger11);
            scheduler.scheduleJob(job12, trigger12);
            scheduler.scheduleJob(job21, trigger21);
            scheduler.scheduleJob(job22, trigger22);
            scheduler.scheduleJob(job31, trigger31);
            scheduler.scheduleJob(job32, trigger32);
            scheduler.start();

            for (int i = 0; i < 100; i++) {
                if (i == 3) {
                    GroupMatcher matcher = GroupMatcher.groupEquals("group_1");
                    Set jobkeySet = scheduler.getJobKeys(matcher);
                    List jobkeyList = new ArrayList();
                    jobkeyList.addAll(jobkeySet);
                    scheduler.deleteJobs(jobkeyList);
                    System.out.println("change");
                }
                Thread.sleep(1000);
            }

            scheduler.shutdown();
        } catch (SchedulerException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

这里仅列出JobOne的代码,JobTwo和JobThree一样,输出的内容读者自己确定

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class JobOne implements Job{
//继承Job接口
    public void execute(JobExecutionContext context) throws JobExecutionException {
//      System.out.println("I am job_1");
        System.out.println("************");
    }

}

效果就是,在删除之前,输出JobOne,JobTwo,JobThree中要求输出的内容;
删除之后仅输出JobTwo,JobThree中要求输出的内容。

你可能感兴趣的:(工具使用)