我正在使用quartz 2.2,我想用一组触发器来安排一个作业。 我打算使用以下方法。
void scheduleJobs(Map<JobDetail, Set<? extends Trigger>> triggers, boolean replace)
我的问题是,如何创建一个接受扩展Trigger
的类的Set
?
TriggerBuilder
仅返回 Trigger
,但我无法将相同的内容放入集合中。
我搜索了 API 但没有找到解决方案。
谢谢
最佳答案
纯 Java 中最简单的方法(可能不是最干净的方法)是执行以下操作:
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);
或者,如果您没有使用 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);
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);
更新。使用 TriggerBuilder 实际上并没有多大改变。 TriggerBuilder.build()
返回一个触发器实例,可以像 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);
关于java - 使用一组触发器在quartz中安排作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21292936/