很抱歉,如果这个问题太幼稚, 我希望可以对作业进行计划,以便它一次执行而不是并行执行。它只能执行一次。
在文档中,@ DisallowConcurrentExecution是
但是当我用相同的JobKey安排工作时,
Failed to schedule a job org.quartz.ObjectAlreadyExistsException
如果我生成其他JobKey,则它不会引起注意@DisallowConcurrentExecution
,并且该作业将并行执行(如文档中所述)。
请提出如何实现此目标,任何指针都将真正有帮助!
PS:我不知道将要安排的工作。因此,如果作业已经在运行,我需要一些方法来动态链接这些作业。
答案 0 :(得分:2)
同一JobKey
=相同的工作。
不同的JobKey
=不同的工作。
Quartz不允许您多次使用相同的JobKey
,因为这将是两个具有相同密钥的作业。就像有两个具有相同ID的用户一样。
您需要为同一JobTrigger
安排不同的JobKey
。
@DisallowConcurrentExecution
避免了 same 作业的重复执行。如果您使用不同的JobKey
,那么它将不再是同一工作,因此注释不会有任何作用。但是对于给定的JobKey
有几个JobTrigger
的情况,如果前一个尚未完成,@DisallowConcurrentExecution
将阻止触发器启动该作业的新执行。
我建议看看Quartz's documentation,以更深入地了解上述概念。