gpt4 book ai didi

java - 在 Quartz 调度程序中使用 @DisallowConcurrentExecution

转载 作者:行者123 更新时间:2023-12-02 01:32:07 24 4
gpt4 key购买 nike

如果这个问题太天真,我很抱歉,我希望安排作业,以便它一个接一个地执行,而不是并行执行。它只执行一次。

从文档来看,@DisallowConcurrentExecution 是

  • 一种注释,将 {@link Job} 类标记为不得同时执行多个实例(其中实例基于 {@link JobDetail} 定义 - 或者换句话说,基于 {@link JobKey }).

但是当我使用相同的 JobKey 安排工作时,我得到无法安排作业org.quartz.ObjectAlreadyExistsException

如果我生成不同的 JobKey,它不会留意 @DisallowConcurrentExecution 并且作业将并行执行(如文档中所述)。

请建议我如何实现这一目标,任何指示都会很有帮助!

PS:我不知道会安排哪些工作。因此,如果作业已经在运行,我需要一些方法来动态链接作业。

最佳答案

相同的JobKey =相同的工作。
不同的 JobKey = 不同的工作。

Quartz 不允许您多次使用同一个 JobKey,因为这将是两个具有相同 key 的作业。就像两个用户具有相同的 ID 一样。

您需要做的是为同一个JobKey安排不同的JobTrigger

@DisallowConcurrentExecution 避免同一作业的重叠执行。如果您使用不同的 JobKey,则它不再是同一个作业,因此注释不会产生任何效果。但对于具有多个 JobTrigger 的给定 JobKey@DisallowConcurrentExecution 将阻止触发器启 Action 业的新执行(如果前一个执行已执行)还没完。

我建议看看Quartz's documentation为了更深入地理解上述概念。

关于java - 在 Quartz 调度程序中使用 @DisallowConcurrentExecution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55882079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com