簡體   English   中英

Java Spring shedlock 失敗

[英]Java Spring shedlock fails

我有一個 spring-boot 應用程序,它在生產環境中運行 2 個實例,導致計划任務運行兩次。 為避免我嘗試使用 shedlock,如此此處所述,但它沒有影響。 我已經在使用 MySql db,我添加了一個shedlock表,如上面兩個示例中所述。

我的項目結構如下(部分) -

在此處輸入圖片說明

在我的application.properties文件中,我有這個設置 -

db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/b4ad?autoReconnect=true&useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
db.username=*****
db.password=*****

AppConfig類我添加了這個注釋 -

@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")

還有這個豆子——

@Bean
public LockProvider lockProvider(DataSource dataSource) {
    return new JdbcTemplateLockProvider(dataSource, "b4ad.shedlock");
}

ScheduledManager類中,我有這個計划任務 -

 @Scheduled(cron = "0 0/1 * * * ?")
@SchedulerLock(name = "deactivateExpiredOrganizations", lockAtLeastFor = "PT5M")
public void deactivateExpiredOrganizations() {
    // my code...
}

當我在 2 個實例上本地運行我的應用程序(使用application.properties文件中的 2 個不同端口)時,查看日志我可以看到任務在兩個實例上運行,同時shedlock表保持為空。 根據故障排除部分的第二項,我似乎配置錯​​誤,但我不知道是什么。

任何幫助將不勝感激。

好吧,顯然在我的大項目中有另一個配置類(除了AppConfig ) - 一個叫做SqlSpringConfig ,在 db 模塊內。 一旦我把LockProvider bean 放在那里,一切都像魅力一樣

暫無
暫無

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

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