我很抱歉,如果这个问题太天真了,我期待安排这些工作,以便逐个执行,而不是平行执行。它只执行一次。
从docs,@ DisallowConcurrentExecution是
但是当我安排一份同样的JobKey工作时,我会得到Failed to schedule a job org.quartz.ObjectAlreadyExistsException
如果我生成一个不同的JobKey,它不会注意到@DisallowConcurrentExecution
并且该作业正在并行执行(如文档中所述)。
请建议我如何实现这一点,任何指针都会有所帮助!
PS:我不知道将安排的工作。因此,如果作业已在运行,我需要一些方法来动态链接作业。
同样的JobKey
=同样的工作。
不同的JobKey
=不同的工作。
Quartz不会让你多次使用相同的JobKey
,因为这是两个具有相同键的作业。就像拥有两个具有相同ID的用户一样。
你需要做的是为同一个JobTrigger
安排不同的JobKey
s。
@DisallowConcurrentExecution
避免重复执行相同的工作。如果你使用不同的JobKey
,它不再是同一个工作,所以注释没有任何影响。但是对于给定JobKey
和几个JobTrigger
s,@DisallowConcurrentExecution
将阻止触发器启动新的执行工作,如果前一个尚未完成。
我建议看看Quartz's documentation,以便更深入地了解上述概念。