Quartz 按組刪除任務
阿新 • • 發佈:2019-01-05
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<JobKey> matcher = GroupMatcher.groupEquals("group_1");
Set<JobKey> jobkeySet = scheduler.getJobKeys(matcher);
List<JobKey> jobkeyList = new ArrayList<JobKey>();
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中要求輸出的內容。