I am using quartz 2.2 and I want to schedule a job with a set of triggers. I plan to use the following method.
void scheduleJobs(Map<JobDetail, Set<? extends Trigger>> triggers, boolean replace)
My question is, how do I create a Set
that takes in a class that extends Trigger
? TriggerBuilder
returns only the Trigger
, but I can't put the same in the set. I searched the API but could not find a solution.
Thanks
The simplest way (probably not the cleanest one) in plain Java is to do the following:
QuartzScheduler quartzScheduler = ...
Set<Trigger> triggers = new HashSet<>();
triggers.add(new SimpleTriggerImpl());
triggers.add(new CronTriggerImpl());
Map<JobDetail, Set<? extends Trigger>> triggersAndJobs = new HashMap<>();
triggersAndJobs.put(new JobDetailImpl(), triggers);
quartzScheduler.scheduleJobs(triggersAndJobs, false);
Or if you are not using Java 7:
QuartzScheduler quartzScheduler = ...
Set<Trigger> triggers = new HashSet<Trigger>();
triggers.add(new SimpleTriggerImpl());
triggers.add(new CronTriggerImpl());
Map<JobDetail, Set<? extends Trigger>> triggersAndJobs = new HashMap<JobDetail, Set<? extends Trigger>>();
triggersAndJobs.put(new JobDetailImpl(), triggers);
quartzScheduler.scheduleJobs(triggersAndJobs, false);
A shorter version with Guava:
QuartzScheduler quartzScheduler = ...
Set<? extends Trigger> set = Sets.newHashSet(new SimpleTriggerImpl(), new CronTriggerImpl());
Map<JobDetail, Set<? extends Trigger>> triggersAndJobs = Maps.newHashMap();
triggersAndJobs.put(new JobDetailImpl(), set);
quartzScheduler.scheduleJobs(triggersAndJobs, false);
Update . Using TriggerBuilder
in fact doesn't change much. TriggerBuilder.build()
returns a trigger instance which can be referenced just as Trigger
.
QuartzScheduler quartzScheduler = ...
Set<Trigger> triggers = new HashSet<Trigger>();
Trigger trigger1 = newTrigger()
.withIdentity(triggerKey("myTrigger", "myTriggerGroup"))
.withSchedule(simpleSchedule()
.withIntervalInHours(1)
.repeatForever())
.startAt(futureDate(10, DateBuilder.IntervalUnit.MINUTE))
.build();
triggers.add(trigger1);
Trigger trigger2 = newTrigger() ...
triggers.add(trigger2);
Map<JobDetail, Set<? extends Trigger>> triggersAndJobs = new HashMap<JobDetail, Set<? extends Trigger>>();
triggersAndJobs.put(new JobDetailImpl(), triggers);
quartzScheduler.scheduleJobs(triggersAndJobs, false);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.