19

我正在使用 Quartz Scheduler v.1.8.0。

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

standby() - 暂时停止调度程序触发触发器。

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

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

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

4

5 回答 5

18

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

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

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

于 2010-09-06T11:15:16.987 回答
7

在待机pauseAll之后恢复调度程序时存在差异。

在 API 文档的以下描述中,我用粗体表示了差异。

待机

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

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

调度器没有被破坏,可以随时重新启动。

暂停所有

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

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

于 2010-09-06T11:16:13.413 回答
3

这是我从源代码 v1.8.6 中得到的:

standby()只是冻结调度程序线程,这意味着从现在开始不会再触发触发器,即使是以后添加的那些新触发器

start()只需恢复调度程序线程,不会立即应用失火策略。但是所有的失火都会在以后自然而然地应用。

pauseAll()类似于 call pauseTriggerGroup()on every now existing trigger groups,这意味着以后添加的那些新的触发器组将被正常触发。pauseJob()请注意,与or无关pauseJobGroup(),它只是关于触发器及其组上发生的事情。

resumeAll()类似于调用resumeTriggerGroup()每个现有的触发组。此外,在执行期间将应用失火resumeAll()

于 2018-07-03T13:20:00.203 回答
0

虽然pauseAll()暂停所有计划(当时已经创建),但standby()暂停计划程序本身。因此,当您创建一个新计划时,pauseAll()它将被安排并适当地运行,但如果standby()它运行不早于调度程序上的“start()”方法将被调用。

于 2017-10-29T17:26:57.087 回答
0

start() 和 standby() 是每个实例的方法。以集群模式运行的其他实例将继续触发作业。

resumeAll() 和 pauseAll() 适用于整个集群。

于 2016-03-18T00:04:57.723 回答