繁体   English   中英

使用一组触发器安排石英作业

[英]Schedule a job in quartz with a set of triggers

我使用的是石英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);

番石榴的较短版本:

    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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM