Quartz ジョブを毎分実行する
Quartz で「毎分」を表す式は 0 * * * * ? です。以下に、そのまま使える設定、次回の実行時刻、注意点をまとめます。 Quartz の CronTrigger は秒から始まる 6〜7 フィールドで、日曜日は 1、日付フィールドの一方に ? を書きます。
0 * * * * ?ツールで開く“毎分”
CronTrigger
CronTrigger
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("every-minute")
.withSchedule(CronScheduleBuilder.cronSchedule("0 * * * * ?")
.inTimeZone(TimeZone.getTimeZone("UTC")))
.build();Quartz の注意点
日付フィールドの一方は ?Quartz は日と曜日の同時指定に対応していません。使わない方に ? を書きます。
日曜日は 1曜日は SUN から 1〜7 なので、2-6 が月曜日〜金曜日です。crontab の 1-5 とは意味が違います。
ミスファイア発火時刻にスケジューラが止まっていた場合の動作はミスファイア指示で決まります。既定ではできるだけ早く 1 回発火します。
年は省略可7 番目のフィールドで年を限定できます。省略すると毎年です。
よくある質問
Quartz で「毎分」を表す cron 式は?
0 * * * * ? です。意味:毎分
Quartz のスケジュールはどのタイムゾーンで動きますか?
CronScheduleBuilder で inTimeZone() を呼ばない限り、JVM の既定タイムゾーンです。
Quartz と Spring の cron は同じですか?
違います。どちらも秒から始まりますが、Quartz は日曜日が 1 で日付フィールドの一方に ? が必要です。Spring は日曜日が 0 で年フィールドがありません。
Quartz の L はどういう意味ですか?
日フィールドの L は月末、曜日フィールドの 6L は最終金曜日です。曜日フィールドの L 単独は土曜日を意味します。