调度程序的 standby() 和 pauseAll() 有什么区别?

2022-09-02 12:49:42

我使用的是Quartz Scheduler v.1.8.0。

scheduler.standby()scheduler.pauseAll() 之间有什么区别?

standby() - 暂时停止计划程序触发触发器。

pauseAll() - 暂停所有触发器 - 类似于在每个组上调用 pauseTriggerGroup(group),但是,使用此方法后,必须调用 resumeAll() 以清除计划程序的“记住”状态,即所有新触发器在添加时都将暂停。

根据我从API文档中了解到的情况,我无法轻松/清楚地区分/区分它们中的每一个。我看到它们都具有相同的目的 - 暂时暂停/停止调度程序中的所有触发器,随后是start()(用于待机)或resumpAll()(用于暂停All)以清除调度程序的状态。还有其他区别吗?

希望专家可以帮助我理解任何细微的差异。


答案 1

不同之处在于应用行为的触发器失火指令。

当您在 standby() 之后调用 start() 时,任何在待机时出现的失火都将被忽略。

当您在 pauseAll() 之后调用 resumeAll() 时,将应用在调度程序暂停时出现的所有误射。


答案 2

待机后恢复计划程序和暂停All时存在差异。

我在API文档的以下描述中以粗体进行了区分。

待机

void standby() throw SchedulerException 暂时停止调度程序触发触发器。

当调用 start() 时(使调度程序退出待机模式),在执行 start() 方法期间不会应用触发器失火指令 - 任何失火都将在之后立即被检测到(通过 JobStore 的正常进程)。

调度程序不会被销毁,并且可以随时重新启动。

暂停全部

void pauseAll() 抛出 SchedulerException Pause 所有触发器 - 类似于在每个组上调用 pauseTriggerGroup(group),但是,在使用此方法 resumeAll() 后,必须调用All() 以清除调度程序的“记住”状态,即所有新触发器在添加时都将暂停。

当调用 resumeAll() 时(以取消暂停),将应用触发器失火指令。


推荐