我有一些工作要通过三个触发器触发(每个触发器有四个工作) 我想要一个指定的工作总是先发射,其余的可以按随机顺序发射。 我应该实现不同的触发器?有没有办法优先考虑做什么?我已经在一个线程中解雇了他们
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1
和
newTrigger().withSchedule(
CronScheduleBuilder.cronSchedule(exp))
.withPriority(getPriorityForOperation(cronOperation))
.build();
第一份工作的优先级与其他工作的优先级不同,但无论如何都以随机顺序运行
答案 0 :(得分:2)
有时,当你有许多触发器(或Quartz线程池中的少数工作线程)时,Quartz可能没有足够的资源来立即触发计划同时触发的所有触发器。在这种情况下,您可能希望控制哪些触发器在可用的Quartz工作线程中首先破解。为此,您可以在Trigger上设置priority属性。如果N触发器同时触发,但当前只有Z工作线程可用,则首先执行具有最高优先级的第一个Z触发器。如果您没有为触发器设置优先级,那么它将使用默认优先级5.任何整数值都允许优先级,正或负。
答案 1 :(得分:1)
我误解了Quartz中的优先级。它适用于触发器,不适用于工作。 按指定的顺序解雇工作我们需要使用
JobChainingJobListener chain;
chain.addJobChainLink(dailyJob.getKey(), jobDetail.getKey());
其中jobDetail在我的例子中,每月,每季度和每年。 谢谢你的帮助。