我正在使用Quartz Scheduler v.1.8.0。
scheduler.standby()和scheduler.pauseAll()之间有什么区别?
待机() - 暂时停止调度程序触发触发器。
pauseAll() - 暂停所有触发器 - 类似于呼叫 每个都有pauseTriggerGroup(group) 然而,在使用此组之后 方法resumeAll()必须被调用 清除调度程序的状态 '记住'所有新的触发器 将被添加时暂停。
根据我从API文档中理解的内容,我无法轻易/清楚地区分/区分它们中的每一个。我看到它们都用于相同的目的 - 暂时暂停/暂停调度程序中的所有触发器,然后是 start()(用于待机)或 resumeAll()< / em>(用于pauseAll)清除调度程序的状态。还有其他区别吗?
希望专家可以帮助我理解任何微妙的差异。
答案 0 :(得分:18)
不同之处在于触发失火指令应用行为。
在待机()之后调用start()时,将忽略在待机状态下出现的任何失火。
当您在pauseAll()之后调用resumeAll()时,将会应用调度程序暂停时出现的所有失误。
答案 1 :(得分:7)
在standby和pauseAll之后恢复调度程序时会有所不同。
我在API文档的以下说明中做了大胆的改编。
待机:
void standby() throws SchedulerException暂时停止Scheduler 发射触发器。
调用start()时(带) 调度程序退出待机模式), 触发失火指令不会 在执行期间应用 start()方法 - 任何失火都会 之后立即检测到(由 JobStore的正常流程)。
调度程序未被销毁,并且 可以随时重新开始。
pauseAll :
void pauseAll() throws SchedulerException暂停所有触发器 - 类似于在每个上调用pauseTriggerGroup(group) 然而,在使用此组之后 方法resumeAll()必须被调用 清除调度程序的状态 '记住'所有新的触发器 将被添加时暂停。
当调用resumeAll()时(到 不停顿,触发失火 将适用说明。
答案 2 :(得分:2)
这是我从源代码v1.8.6中获得的内容:
standby()
只是冻结了调度程序线程,这意味着从现在起不会再触发任何触发器,即使是以后添加的那些新触发器。
start()
仅恢复调度程序线程,并且不会立即应用断火策略。但是所有的失火都将在以后自然应用。
pauseAll()
类似于在每个现有触发器组上调用pauseTriggerGroup()
,这意味着以后添加的那些新触发器组将被正常触发。并且请注意,与pauseJob()
或pauseJobGroup()
无关,这与触发器及其组上发生的事情有关。
resumeAll()
类似于在每个现有触发器组上的调用resumeTriggerGroup()
。此外,在执行resumeAll()
时会发生误动作。
答案 3 :(得分:0)
start()和standby()是按实例方法。在群集模式下运行的其他实例将继续触发作业。
resumeAll()和pauseAll()适用于整个群集。
答案 4 :(得分:0)
虽然pauseAll()
暂停所有计划(已经由该时刻创建),但standby()
暂停计划程序本身。因此,当您创建新计划时,在pauseAll()
之后它将被安排并正确运行,但是如果standby()
它运行时间不早于'start()'方法将在调度程序上调用。