web-dev-qa-db-ja.com

Spring Scheduling-真夜中の毎日のCron式が機能しない?

私は春のタスクを毎日真夜中に実行するようにスケジュールしようとしています。 Springの 公式ガイド に従い、スケジューラクラスを次のように作成しました。

@Component
    public class OverduePaymentScheduler {    

        @Scheduled(cron = "0 0 0 * * *")
        public void trackOverduePayments() {

              System.out.println("Scheduled task running");

        }
    }

ただし、クロックが午前12時になると、タスクは実行されません。この link でクォーツスケジューラのドキュメントからcron式を取得しました。

Cron式を10秒ごとに実行される「*/10 * * * * *」に変更すると、スケジューラーは正常に実行されます。

それで、私は何を間違っていますか?

15
Ali Muju

最終的にこのcron式0 0 0 * * *で動作するようになりましたが、このようにスケジューラクラスでタイムゾーンを設定する必要がありました。 @Scheduled(cron = "0 0 0 * * *",zone = "Indian/Maldives")

14
Ali Muju

これらは、cron式の有効な形式です。

  • 0 0 * * * * =毎日の1時間ごとのトップ。
  • */10 * * * * * = 10秒ごと。
  • 0 0 8-10 * * * =毎日8、9、および10時。
  • 0 0 6,19 * * * =毎日午前6:00と午後PM。
  • 0 0/30 8-10 * * * =毎日8:00、8:30、9:00、9:30、10:00、10:30。
  • 0 0 9-17 * * MON-FRI =平日の9時から5時まで
  • 0 0 0 25 12 ? =毎週クリスマスの深夜0時

パターンは次のとおりです。

second, minute, hour, day, month, weekday

あなたの答えは:

0 0 0 * * *
34
Rzv Razvan

毎日午前12:00に以下のcronパターンを使用してください。

    // at 12:00 AM every day
    @Scheduled(cron="0 0 0 * * ?")

このウェブサイトでcronパターンを確認しました: http://www.cronmaker.com/

パターン0 0 0 * * *は無効と表示されます。

12
Ajit Soman

以下の形式を使用して、要件を満たすことができます。

0 0 23 * * *

Quartz構成の場合、時間は0から23で始まるため。詳細については、この link を参照してください。

3
RahuL Sharma