Quartz Job Scheduler如何按照确切的顺序解雇作业

时间:2016-07-29 08:05:43

标签: java cron quartz-scheduler

我有一些工作要通过三个触发器触发(每个触发器有四个工作) 我想要一个指定的工作总是先发射,其余的可以按随机顺序发射。 我应该实现不同的触发器?有没有办法优先考虑做什么?我已经在一个线程中解雇了他们

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1

 newTrigger().withSchedule(                    
                CronScheduleBuilder.cronSchedule(exp))
                .withPriority(getPriorityForOperation(cronOperation))
                .build();

第一份工作的优先级与其他工作的优先级不同,但无论如何都以随机顺序运行

2 个答案:

答案 0 :(得分:2)

有时,当你有许多触发器(或Quartz线程池中的少数工作线程)时,Quartz可能没有足够的资源来立即触发计划同时触发的所有触发器。在这种情况下,您可能希望控制哪些触发器在可用的Quartz工作线程中首先破解。为此,您可以在Trigger上设置priority属性。如果N触发器同时触发,但当前只有Z工作线程可用,则首先执行具有最高优先级的第一个Z触发器。如果您没有为触发器设置优先级,那么它将使用默认优先级5.任何整数值都允许优先级,正或负。

答案 1 :(得分:1)

我误解了Quartz中的优先级。它适用于触发器,不适用于工作。 按指定的顺序解雇工作我们需要使用

JobChainingJobListener chain;
chain.addJobChainLink(dailyJob.getKey(), jobDetail.getKey());

其中jobDetail在我的例子中,每月,每季度和每年。 谢谢你的帮助。