0

クォーツスケジューラでは疑問があります

例えば

ジョブを 5 分、10 分、または 2 時間ごとにスケジュールする場合は問題ありません。以下のような定期的な時間間隔を使用してスケジューラを呼び出します。

    SimpleTrigger simpleTrigger = new SimpleTrigger("mytrigger",sched.DEFAULT_GROUP,new Date(),null,SimpleTrigger.REPEAT_INDEFINITELY,30L*5000L);

しかし、今日、2'0 クロックと 3'0 クロックでジョブをスケジュールした場合、明日は 5'0 クロックと 7'0 クロックと 11'0 クロックに変更します。私の疑問は、上記で固定間隔を呼び出すかどうかです。方法ですが、固定または定期的な間隔ではありません。私のクエリに関する提案、アイデア、または例....

4

1 に答える 1

0

できることは、ファイルまたは DB で間隔を定義し、そこから読み取ることです。

JobListenerも定義します。

間隔の値をJobDataMapに保存し、ジョブが開始されるたびに、リスナー メソッドjobToBeExecuted()を使用して、ファイル/DB から値を読み取り、JobDataMap.

それらが同じ場合、更新は行われず、ジョブが実行されます。変更されている場合は、を使用してジョブを再スケジュールしScheduler.rescheduleJob(TriggerKey triggerKey,Trigger newTrigger)ます。

この方法には少し問題があることに注意してください。構成はジョブが実行された後にのみ変更されるため、ファイル/DB を更新しても、次の実行は古い時間のままであり、その後の実行のみが行われます。新しい時間。

于 2012-07-31T13:48:44.243 に答える