Spring cronアノテーションを利用して、特定のサービスを1日あたり3つの異なるセッションの特定の間隔で毎分実行したいと考えています。
例:最初のセッション:8:15 am-12:36 pm、2番目のセッション:12:40 pm-3:11 pm、3番目のセッション:3:20 pm-4:35 pm。
この特定の例のcron式を設定するにはどうすればよいですか?
Oracleのドキュメントでこれを確認しましたが、これは私が遭遇した最も近い実装です
"0 0/5 14,18 * *?毎日午後2時から午後2時55分まで5分ごとに発砲し、午後6時から午後6時55分まで終了して5分ごとに連射する」
異なる時間と異なるセッション間の間隔のインスタンスはありません
@Scheduled(cron = "0 29-35 11,12 * * ?")
public static void testCron() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("testing cron per minute " + dateFormat.format(date)); }
上記のテストコードから、11:29から11:35の間のコメントを出力しますが、11:35を過ぎては何も出力しません。次のプリントアウトは12:29以降です。
これを実現するために、メソッドに複数の@Scheduled
アノテーションを付けることができ、アジェンダの読みやすさと流儀を改善します。
@Scheduled(cron = "0 15-36 8-12 * * ?")
@Scheduled(cron = "0 40-11 12-15 * * ?")
@Scheduled(cron = "0 20-35 15-16 * * ?")
public static void testCron() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("testing cron per minute " + dateFormat.format(date)); }
crontab.guruオンラインツールを使用して、いくつかのcrontab構成をテストすることもできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加