0
私はQuartz
をクラスタ内で実行していますので、定期的にジョブを実行しています。ジョブはあるマシンで開始され、他のジョブは次の実行時間まで保持されます。クラスタ環境で既に開始されているクォーラム遅延ジョブはありません
私が今したいのは、前の呼び出しがまだ完了していなければ、ジョブの呼び出しを遅らせることです。
10:00 - instance invocation#1
10:06 - invocation#1 finished
10:10 - instance invocation#2
10:13 - invocation#2 finished
10:20 - instance invocation#3
10:31 - invocation#3 finished // took longer than expected
10:31 - instance invocation#4 // start delayed
10:35 - invocation#4 finished
でも、これは許容可能である:例えば
10:00 - instance invocation#1
10:06 - invocation#1 finished
10:10 - instance invocation#2
10:13 - invocation#2 finished
10:20 - instance invocation#3
10:31 - invocation#3 finished // took longer than expected
10:40 - instance invocation#4 // waits for next timed invocation
10:44 - invocation#4 finished
私は、トリガーのようにcron式を使用していますし、それは各10分(0 0/10 * * *
)一度トリガされます。
この注釈を読んでいる限り、同じノード上でジョブを実行することはできません。私の懸念は、クラスタ環境での実行を遅らせることです。 –
binoternaryが正しい。 @DisallowConcurrentExecutionはそのトリックを行います。特定の時点で、このジョブの1つのインスタンスだけが実行されます。 – Srinivas