0

毎日午前 10 時に実行されるクォーツ ジョブを作成しようとしていますが、最初は午前 9 時 30 分に開始されます。次のように、開始時刻と cron 式を使用して実行しています。

CronTrigger newTrigger = newTrigger().withIdentity(jobName + i, jobName)
   .startAt(startTime).endAt(endTime).withSchedule(cronSchedule(cronExpression)
   .withMisfireHandlingInstructionFireAndProceed().inTimeZone(timeZone)).build();

cron 式は次のとおりです。

0 0 10 * * ?

ただし、ジョブは午前 10:00 に実行を開始します (開始時刻は無視します)。qrtz_triggersデータベースのテーブルを見ていると、start_time実際には 9:30 ですが、next_fire_time10:00 であることがわかります。

ここで何が間違っていますか?

4

1 に答える 1

2

開始時刻と終了時刻は、cron スケジュールがアクティブなウィンドウです。トリガーが起動される最初と最後の時間を指定しません。

たとえば、開始時刻が午前 9 時 30 分、終了時刻が午後 6 時 30 分で 1 時間ごとに起動するスケジュールは、この期間中の正時に起動します。

あなたの場合、cron スケジュールは 1 日 1 回午前 10 時であり、これは開始時間枠と終了時間枠内にあるため、これは関係ありません。

毎日午前 9 時 30 分と午前 10 時の両方でジョブを起動する場合、最も簡単な方法は、同じジョブを呼び出す 2 つの cron トリガーを作成することです。

于 2013-02-27T13:08:43.517 に答える