私はQuartzを使用してJavaでジョブをスケジュールしています。 スケジューラは無期限に繰り返します。 Job.classで特定の例外が発生した場合は、スケジューラをシャットダウンする必要があります。 ジョブをシャットダウン()にスケジューリングクラスに通知するにはどうすればよいですか?クォーツ - ジョブ変数に基づくシャットダウンスケジューラ
おかげで、 RayK
私はQuartzを使用してJavaでジョブをスケジュールしています。 スケジューラは無期限に繰り返します。 Job.classで特定の例外が発生した場合は、スケジューラをシャットダウンする必要があります。 ジョブをシャットダウン()にスケジューリングクラスに通知するにはどうすればよいですか?クォーツ - ジョブ変数に基づくシャットダウンスケジューラ
おかげで、 RayK
クォーツの仕事は、そのexecute(JobExecutionContext)
メソッドを呼び出すことによって実行されます。このJobExecutionContext
オブジェクトには、ジョブを実行しているScheduler
にアクセスするためのgetScheduler()
メソッドがあります。
だから、あなただけ行うことができます:
class YourJob implements Job {
//...
@Override
public void execute(final JobExecutionContext context) throws JobExecutionException {
//...
if (someCondition) {
try {
context.getScheduler().shutdown();
} catch (SchedulerException e) {
// log or rethrow!
}
}
//...
しかし、私は仕事を実行しているの途中でスケジューラをシャットダウンすることは良い考えであれば、本当にわかりません。なぜあなたはそれをしたいのですか?あなたがやろうとしているすべてが再び実行されているから、いくつかのジョブを停止している場合、それは良いかもしれちょうどunscheduleこと:仕事の
スケジュールの解除特にトリガー:
// Unschedule a particular trigger from the job (a job may have more than one trigger) scheduler.unscheduleJob(triggerKey("trigger1", "group1"));
ジョブを削除し、そのトリガ
scheduler.deleteJob(jobKey("job1", "group1"));
のすべてのスケジュールの解除は、ここでのシナリオだ - 毎朝、ファイルのセットをフォルダに送信されます。私のコードはこのフォルダから3Aと7Aの間のファイルを探します。ファイルが見つかったら、ファイルを移動して処理します。その後ジョブが実行されるたびに、ファイルが見つからず(ファイルが移動された)、何も処理されません。翌朝、もう一度プロセスが始まります。問題は、その日にそのフォルダに移動されたファイルがない場合です。午前7時に処理が行われていない場合は、次の日のファイルを処理しないようにスケジューラをシャットダウンする必要があります。それらは順番に行う必要があります。 – DropOfGoldenSun
@DropOfGoldenSun Oohhhh 3 AM-7AMの男!申し訳ありませんが、私はあなたを認識しませんでした。私はあなたの言ったことに対処するために私の答えを編集します。 – walen
それは私です。私はまだこれをすべて理解しようとしています。ご協力いただきありがとうございます。 – DropOfGoldenSun