クラスターで実行してQuartz
おり、定期的にジョブを実行しています。ジョブは 1 台のマシンで開始され、他のマシンは次の実行時まで保持されます。
ここで必要なのは、前の呼び出しがまだ完了していない場合に、ジョブの呼び出しを遅らせることです。例えば:
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 分ごとに 1 回トリガーされます ( 0 0/10 * * *
)。