我和Spring一起使用Quartz。我正在使用的JobStore是RAMJobStore。
我创建了几个具有相同标识的作业(它们具有相同的实例定义(JobDetail))。因为我想确保这些作业不是并行执行的,所以我用@DisallowConcurrentExecution注释了它们的作业类。
我的问题是RAMJobStore不允许在商店中同时具有相同标识的多个作业,因此当我尝试添加作业时,我得到异常:
org.quartz.ObjectAlreadyExistsException: Unable to store Job :
'jobX', because one already exists with this identification.
您对我如何克服这个问题有任何想法吗?
非常感谢!
答案 0 :(得分:1)
如果你有两个不同的工作在两个不同的触发器上运行,那么我不知道任何会阻止这两个工作并行运行的Quartz注释。您可以在每个作业中引用Scheduler实例以确定其他作业是否正在执行。然后,您可以暂停或重新安排作业,以防止它们并行运行。
答案 1 :(得分:0)
从RAMJobStore源代码可以清楚地看出,RAMJobStore中不能同时存在两个具有相同键的作业。
在源代码中查看here。