6

私はQuartzに少し慣れていません。すでに送信された Quartz ジョブのジョブ実行間隔を更新する方法はありますか? この間隔はすぐに更新されますか? 再スケジュールした後、ジョブをもう一度開始する必要がありますか?

次のリンクを見つけましたが、リンクで使用されているクラスの一部が私のクォーツ jar に含まれていないため、参照しているコードがどのライブラリかわかりません。また、triggerKey メソッドはどこから来たのですか? これはある種の静的インポートですか?

http://www.quartz-scheduler.org/documentation/2.4.0-SNAPSHOT/cookbook/UpdateTrigger.html

ジョブがテスト中のクラスの状態に干渉したくないため、JUnit テスト ケースの 1 つでジョブ実行間隔を非常に大きな値に更新したいと考えています。テスト ケースが完了したら、ジョブの実行間隔を本番環境で使用される実際の値にリセットしたい

4

2 に答える 2

21

新しいトリガーを作成して、ジョブのスケジュールを変更する必要があります。

public void execute(JobExecutionContext context) throws JobExecutionException {
    Trigger newTrigger = what_ever_you_want;
    Trigger oldTrigger = context.getTrigger();
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
    scheduler.rescheduleJob(oldTrigger.getKey(), newTrigger);
}

これにより、同じジョブが新しい​​トリガー起動時間に置き換えられます。

于 2012-12-28T02:08:49.420 に答える