web-dev-qa-db-ja.com

Quartzスケジューラで25秒ごとに実行する方法は?

Java用のQuartz Scheduling APIを使用しています。 cron-expressionを使用して25秒ごとに実行するのを手伝ってもらえますか。それはただの遅れです。常に0秒から開始する必要はありません。たとえば、シーケンスは次のようになります。0:00、0:25、0:50、1:15、1:40、2:05など、シーケンスは2番目の0から再び始まります。ありがとうございます。

16
David

Cron表現でそれができるとは思わないが、使用できる

SimpleScheduleBuilder.repeatSecondlyForever( 25 )

300(5分)は25の倍数であるため、自動的に繰り返されます。

16
rediVider

ジョブを定期的にトリガーする場合は、SimpleTriggerを指定したQuartz repeatIntervalを使用できます。

9
darrenmc

Quartz 2.1.5を使用すると、これが役立ちます。

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0/20 * * * * ?"))
    .build();
8
ozhanli

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秒?気にしないで!

6
dcsohl
3
leef

ジョブを絶えず実行するようにスケジュールできますが、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>
0
Joe

クォーツのようなスケジュールを設定することはできません。

できることの1つは、5秒ごとに実行するラッパージョブをスケジュールし、5回の実行ごとにのみ作業を行うことです。

0
Stephen Denne