Java用のQuartz Scheduling APIを使用しています。 cron-expressionを使用して25秒ごとに実行するのを手伝ってもらえますか。それはただの遅れです。常に0秒から開始する必要はありません。たとえば、シーケンスは次のようになります。0:00、0:25、0:50、1:15、1:40、2:05など、シーケンスは2番目の0から再び始まります。ありがとうございます。
Cron表現でそれができるとは思わないが、使用できる
SimpleScheduleBuilder.repeatSecondlyForever( 25 )
300(5分)は25の倍数であるため、自動的に繰り返されます。
ジョブを定期的にトリガーする場合は、SimpleTrigger
を指定したQuartz repeatInterval
を使用できます。
Quartz 2.1.5を使用すると、これが役立ちます。
CronTrigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0/20 * * * * ?"))
.build();
Cronトリガーでこれを行う唯一の方法は、役に立たないほど複雑です。あなたは他の答えからSimpleTriggerを使ったほうがずっと良いです。それでも、cronである必要がある場合は、5つの異なるcronトリガーを設定する必要があります。
0/25 0/5 * * * *
15/25 1/5 * * * *
5/25 2/5 * * * *
20/25 3/5 * * * *
10/25 4/5 * * * *
最初のトリガーは0:00:25、0:00:50に起動します。次に、2番目のトリガーが0:01:15および0:01:40に起動します。 3番目の0:02:05、0:02:30、0:02:55。 4番目の0:03:20、0:03:45。そして最後に、0:04:10と0:04:35の5番目です。その後、最初のトリガーが0:05:00に再び引き継ぎます。
これが機能するのは、25秒が5分に均等に分割されるためです(1時間に均等に分割されるため)。必要に応じて23秒?気にしないで!
*/25 * * * * *
-[wiki] http://en.wikipedia.org/wiki/Cron
-[quartz tutorial] http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson06.html
ジョブを絶えず実行するようにスケジュールできますが、Camel's Throttlerを使用して頻度を調整できます。
<route>
<from uri="jms:queue:TestQueue"/>
<!-- throttle 1 messages per 25 sec -->
<throttle timePeriodMillis="25000">
<constant>1</constant>
<to uri="bean:TestBean?method=testMethod"/>
</throttle>
</route>
クォーツのようなスケジュールを設定することはできません。
できることの1つは、5秒ごとに実行するラッパージョブをスケジュールし、5回の実行ごとにのみ作業を行うことです。