2017-04-03 10 views
1

クォーツスケジューラを翌日までスタンバイにする方法を教えてください。クォーツスケジューラ - 翌日までのスタンバイ

シナリオ: 3 AM-7AM MON-SAT(JOB_A)から10分ごとにフォルダ内のファイルを検索しています。

ファイルが見つかった場合、次の3時間(JOB_B)10分ごとに同じフォルダ内の2番目のファイルを検索する必要があります。

JOB_Aの1つのファイルがMONで見つからない場合、処理はTUEで続行する必要があります。 JOB_Aの1つのファイルがMONでFOUNDになっている場合、JOB_Bはキックオフされますが、JOB_Aはその日に終了し、3AMでTUEに再びチェックを開始する必要があります。

私はJOB_Aを開始でき、適切にチェックします。 ファイルが見つかると、JOB_Bをキックすることができます。 しかし、いったんJOB_Bを開始すると、残りの日はJOB_Aを停止できず、翌日に再び開始することはできません。

ご協力いただければ幸いです。

RayK

答えて

0

あなたは仕事が与えられた日付より前に起動しないようstartAt(Date)メソッドを使用して新しいもの、とJOB_Aのトリガーを置き換えることができます。私は、これはワンタイム・トリガの代替として働くだろうと考えてい

// retrieve the old trigger 
Trigger oldTrigger = sched.getTrigger(triggerKey("oldTrigger", "group1"); 

// obtain a builder that would produce the trigger 
TriggerBuilder tb = oldTrigger.getTriggerBuilder(); 

// update the schedule associated with the builder, and build the new trigger 
Trigger newTrigger = tb 
    .withSchedule(cronSchedule(yourCronExpression)) 
    .startAt(DateBuilder.tomorrowAt(3,0,0)) 
    .build(); 

// tell the scheduler to remove the old trigger with the given key, and put the new one in its place 
sched.rescheduleJob(oldTrigger.getKey(), newTrigger); 
+0

は、ここで簡単な方法で明日の日付を取得するためにDateBuilderの使用と組み合わせhow to replace a trigger上クォーツのドキュメントからのコードです。しかし、 "newTrigger"を "newTrigger"に置き換えようとしたときにWEDで何が起こるのでしょうか?私はそれをユニークにするために、トリガーキーに日付を追加することができたと思います。 – DropOfGoldenSun

+0

@DropOfGoldenSun実際には、 'oldTrigger'のキーを再利用することができます。このコードはQuartzのサンプルページと全く同じですが、私は自分の答えを更新します。 – walen

関連する問題