Quartz Scheduler触发不尊重优先级

时间:2017-10-20 14:42:24

标签: java triggers quartz-scheduler scheduler

基本上,我正在使用Quartz Scheduler的实现,我希望同时运行多个作业,但有些作业应该在其他作业之前运行。为此,我找到了参数" priority"对于触发器。

所以我要说我有4个工作,每个工作都有自己的触发器。我设置了这样的优先级: job1 - 优先级5 job2 - 优先级3 job3 - 优先级11 job4 - 优先8

我希望他们按此顺序运行: job3,job4,job,1,job2

在20次跑步中,只有3次左右我得到了预期的结果。对于其他人来说,要运行的第一个任务是非常随机的,其余的正确排序。一次运行就像: job1,job3,job4,job2 job4,job3,job1,job2

我不能正确理解优先级在Quartz中的工作原理吗?我无法准确找到正在发生的事情。

1 个答案:

答案 0 :(得分:0)

这里的问题是,Quartz并不能确保当您以不同的优先级同时安排多个作业时,您将按照您想要的顺序获得它们,除非您的工作线程已经忙碌。否则,如果工作线程不忙,它将获取具有您可以在纳秒范围内安排的最高优先级的作业。

对于我的情况,线程并不忙,所以当我安排所有工作时,石英有时间接收并处理我安排的第一份工作。当线程忙于处理job1时,其余的作业有时间被安排。

你们可以按照消息"批量采购......"为了追查你自己的问题。

我的解决方案是将方法计划用于作业列表。