![](/img/trans.png)
[英]Spring boot scheduled cron jobs run 2 times when deployed more than one instance
[英]Spring Boot @Scheduled's cron job doesn't work properly when created two jobs
我正在使用 kotlin 的 Spring Boot 的 @Scheduled 函數創建兩個批處理進程。
我能夠從日志中確認在 00:00 執行的批處理正常工作,但我無法確認批處理 2 的執行。
以下是應用程序代碼。
@Service
class ScheduledTaskService {
@Scheduled(cron = "\${task.fetch-data.cron}", zone = "\${task.fetch-data.zone}")
fun fetchData() {
println("The time is now " + ZonedDateTime.now(ZoneId.of("Asia/Tokyo")).toString())
println("start to fetch data")
}
@Scheduled(cron = "\${task.integrate-data.cron}", zone = "\${task.integrate-data.zone}")
fun integrateData() {
println("The time is now " + ZonedDateTime.now(ZoneId.of("Asia/Tokyo")).toString())
println("start to integrate data")
}
}
以下是application.yml
task:
fetch-data:
cron: ${TASK_FETCH_DATA_CRON:0 0 0 * * *}
zone: ${TASK_FETCH_DATA_ZONE:Asia/Tokyo}
integrate-data:
cron: ${TASK_INTEGRATE_DATA_CRON:0 0 3 * * *}
zone: ${TASK_INTEGRATE_DATA_ZONE:Asia/Tokyo}
我還在主類中添加了@EnableScheduling
。
@SpringBootApplication
@EnableTransactionManagement
@ConfigurationPropertiesScan
@EnableScheduling
class APIApplication(private val apiConfig: APIConfig) : ApplicationListener<ApplicationReadyEvent> {
...
第 1 批次:上午 11:00
第 2 批次:下午 12:00
結果:第1 批有效,第 2 批沒有。
第 1 批次:下午 12:20
第 2 批次:下午 12:21
結果: 1 和 2 都有效。
第 1 批次:下午 14:30
第 2 批次:下午 14:05
結果:第2 批有效,第 1 批沒有。
我目前正在調查結果可能因服務器啟動和批處理執行之間的時間而異的可能性。
如果您有任何想法,我很樂意聽取他們的意見。
你的 cron 看起來有點不對勁。 @Scheduled spring 使用Spring Cron 。
你的 cron 表達式應該是
午夜: "0 0 0 * * *"
。 你也可以在這里使用@midnight
。
凌晨 3 點: "0 0 3 * * *"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.