Quartz调度程序 - 是否可以配置Quartz以允许RAMJobStore中具有相同标识的作业?

时间:2012-03-12 15:06:58

标签: java spring quartz-scheduler

我和Spring一起使用Quartz。我正在使用的JobStore是RAMJobStore。

我创建了几个具有相同标识的作业(它们具有相同的实例定义(JobDetail))。因为我想确保这些作业不是并行执行的,所以我用@DisallowConcurrentExecution注释了它们的作业类。

我的问题是RAMJobStore不允许在商店中同时具有相同标识的多个作业,因此当我尝试添加作业时,我得到异常:

   org.quartz.ObjectAlreadyExistsException: Unable to store Job : 
   'jobX', because one already exists with this identification.

您对我如何克服这个问题有任何想法吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

如果你有两个不同的工作在两个不同的触发器上运行,那么我不知道任何会阻止这两个工作并行运行的Quartz注释。您可以在每个作业中引用Scheduler实例以确定其他作业是否正在执行。然后,您可以暂停或重新安排作业,以防止它们并行运行。

答案 1 :(得分:0)

从RAMJobStore源代码可以清楚地看出,RAMJobStore中不能同时存在两个具有相同键的作业。

在源代码中查看here