簡體   English   中英

Spring-Boot @Scheduled Cron表達式可以使兩個任務之間略有延遲?

[英]Spring-Boot @Scheduled Cron expressions to make slight delay between two tasks?

我正在使用Spring-Boot @Scheduled Cron緩存從持久性存儲中檢索到的數據。

我有兩個不同的任務,

  • 在緩存中設置結果
  • 清除緩存

Task1將每15分鍾運行一次。 我將cron設置為

@Scheduled(cron = "0 0/15 * * * *")

所以頻率是

12:00:00
12:15:00
12:30:00

現在我想在Task1之前10秒運行Task2

11:59:50
12:14:50
12:29:50

我正在嘗試這個表情

@Scheduled(cron = "50 0/14 * * * *")

但它每隔14分鍾觸發一次。

誰能建議我解決問題的解決方案?

這將在Task1之前10秒運行Task2:

@Scheduled(cron = "50 14/15 * * * *")

例如,它將在11:59:50、12:14:50、12:29:50、12:44:50、12:59:50上運行...

我建議您使用fixedRatefixedDelay代替cron表達式。 您的要求不是很復雜,因此使用cron毫無意義。

  • 固定延遲 -特別控制最后一次執行完成時的下一個執行時間。

  • 固定速率 -使Spring定期運行任務,即使最后一次調用可能仍在運行-無需等待上一次執行的完成。

使用示例:

@Scheduled(fixedDelay = 900000) // 15 minutes
public void taskOne() {
   ...
}

@Scheduled(fixedDelay = 890000) // 14 minutes 50 seconds
public void taskTwo() {
   ...
}

嘗試:

@Scheduled(cron = "50 59/15 * * * *")

說明:

50 59/15 * * * * = at 50 seconds, every hour at 59 minute, every 15 minutes
50 59/15 * * * * = starting at 11:59:50 for every 15 minutes.

您的問題是*/X表示“每個X”。 所以0/14表示每14分鍾一次。

您可以在docs中閱讀更多內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM