2010-09-06 705 views
14

我正在使用Quartz Scheduler v.1.8.0。調度程序的standby()和pauseAll()有什麼區別?

scheduler.standby()scheduler.pauseAll()有什麼區別?

待機() - 暫時停止觸發的調度的射擊。

pauseAll() - 暫停所有觸發器 - 類似於在每 羣呼 pauseTriggerGroup(組),然而,使用這種 方法resumeAll(後)必須調用的 明確調度的狀態「記住'所有新觸發器 將在添加時暫停。

根據我從API文檔中瞭解的內容,我無法輕鬆/清晰地區分/區分每一個人。我看到他們都服務於相同的目的 - 臨時暫停/暫停調度程序中的所有觸發器,然後是開始()(待機)或resumeAll()(用於pauseAll)清除調度程序的狀態。還有其他的區別嗎?

希望專家可以幫助我理解任何細微差別。

回答

16

區別在於觸發失火指令應用行爲。

當您在待機()後調用start()時,在待機狀態下出現的任何失火將被忽略。

當您在pauseAll()後調用resumeAll()時,將應用調度程序暫停時出現的所有失火。

+1

這是不正確的。如果你調用standby()然後start(),那麼只有在執行start()時纔會忽略觸發錯誤,並且在調用standby()和start()之間的整個持續時間內不工作。 – pkrish 2016-03-18 00:02:09

6

調度程序在standbypauseAll之後恢復時有區別。

我在API文檔的以下說明中對粗體做出了區別。

待機

無效待機() 拋出SchedulerException暫時停止調度的 射擊觸發的。

當起動()被調用(以使 調度出待機模式的), 觸發失火說明將NOT 的 start()方法的執行過程中被施加 - 任何失火將是 之後立即檢測到(由JobStore的正常流程 )。

調度程序沒有被銷燬,並且 可以在任何時候重新啓動。

pauseAll

空隙pauseAll() 拋出SchedulerException暫停所有觸發 - 類似於調用pauseTriggerGroup(組)在每次 基,但是,使用這種 方法resumeAll()之後必須調用 清除調度程序的狀態 「記住」所有新觸發器 將在添加它們時暫停。

當resumeAll()被調用(至 未暫停)時,會觸發失火 指令將被應用。

0

start()和standby()是每個實例的方法。運行在集羣模式下的其他實例將繼續觸發作業。

resumeAll()和pauseAll()適用於整個集羣。

0

雖然pauseAll()暫停所有時間表(已經被那一刻創建),standby()暫停調度本身。因此,當你創建一個新的時間表時,在pauseAll()之後,它將被調度並且適當地運行,但是在standby()的情況下,它運行的時間不會比在調度器上調用'start()'方法的時間早。