19

QuartzSchedulerv.1.8.0を使用しています。

Scheduler.standby()scheduler.pauseAll( )の違いは何ですか?

standby() -スケジューラによるトリガーの起動を一時的に停止します。

pauseAll() -すべてのトリガーを一時停止します-すべてのグループでpauseTriggerGroup(group)を呼び出すのと同様ですが、このメソッドを使用した後、resumeAll()を呼び出して、すべての新しいトリガーがそのまま一時停止されることをスケジューラーの「記憶」状態からクリアする必要があります追加した。

APIドキュメントから理解したことから、それぞれを簡単に/明確に区別/区別することはできません。両方が同じ目的を果たしているのがわかります-スケジューラーのすべてのトリガーを一時的に一時停止/停止し、続いてstart()(スタンバイの場合)またはresumeAll()(pauseAllの場合)がスケジューラーの状態をクリアします。他に違いはありますか?

専門家が微妙な違いを理解するのを手伝ってくれることを願っています。

4

5 に答える 5

18

違いは、動作を適用するトリガーの失火命令にあります。

スタンバイ()の後にstart()を呼び出すと、スタンバイ中に発生する失火は無視されます。

pauseAll()の後にresumeAll()を呼び出すと、スケジューラーが一時停止されている間に表示されるすべての失火が適用されます。

于 2010-09-06T11:15:16.987 に答える
7

スタンバイpauseAllの後にスケジューラを再開する場合には違いがあります。

APIドキュメントからの以下の説明で太字で違いを作りました。

スタンバイ

voidstandby()はSchedulerExceptionをスローしますスケジューラのトリガーの起動を一時的に停止します。

start()が呼び出されると(スケジューラーをスタンバイモードから解除するため)、start()メソッドの実行中にトリガー失火命令は適用されません-失火は直後に検出されます(JobStoreの通常のプロセスによって) 。

スケジューラーは破棄されず、いつでも再起動できます。

pauseAll

void pauseAll()はSchedulerExceptionをスローしますすべてのトリガーを一時停止します-すべてのグループでpauseTriggerGroup(group)を呼び出すのと同様ですが、このメソッドを使用した後、resumeAll()を呼び出して、すべての新しいトリガーが一時停止されることをスケジューラーの「記憶」状態からクリアする必要がありますそれらが追加されます。

resumeAll()が(一時停止を解除するために)呼び出されると、トリガー失火命令が適用されます。

于 2010-09-06T11:16:13.413 に答える
3

これが私がソースコードv1.8.6から得たものです:

standby()スケジューラスレッドをフリーズするだけです。これは、後で追加された新しいトリガーであっても、今後トリガーが起動されないことを意味します。

start()スケジューラスレッドを再開するだけで、失火ポリシーはすぐには適用されません。しかし、すべての失火は後で自然に適用されます。

pauseAll()これは、既存のpauseTriggerGroup()すべてのトリガーグループを呼び出すのと似ています。つまり、後で追加された新しいトリガーグループは通常どおりに起動されます。また、またはとは何の関係もないことに注意してください。トリガーとそのグループで何が起こっているかだけです。pauseJob()pauseJobGroup()

resumeAll()resumeTriggerGroup()現在存在するすべてのトリガーグループを呼び出すのと似ています。さらに、の実行中に失火が適用されresumeAll()ます。

于 2018-07-03T13:20:00.203 に答える
0

start()とstandby()はインスタンスごとのメソッドです。クラスタモードで実行されている他のインスタンスは、引き続きジョブをトリガーします。

resumeAll()およびpauseAll()は、クラスター全体に適用できます。

于 2016-03-18T00:04:57.723 に答える
0

pauseAll()すべてのスケジュール(その時点ですでに作成されている)を一時standby()停止している間、スケジューラ自体を一時停止します。したがって、新しいスケジュールを作成するpauseAll()と、スケジュールされて適切に実行されますが、実行される場合はstandby()、「start()」メソッドがスケジューラーで呼び出されます。

于 2017-10-29T17:26:57.087 に答える