首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Spring shedlock失败

Java Spring shedlock失败
EN

Stack Overflow用户
提问于 2020-10-01 16:57:57
回答 1查看 1.2K关注 0票数 0

我有一个spring-boot应用程序,它在生产环境中运行2个实例,导致计划任务运行两次。为了避免这种情况,我尝试使用shedlock,正如herehere所解释的那样,但它没有任何影响。我已经在使用一个MySql db了,我添加了一个shedlock表,正如上面两个例子所解释的那样。

我的项目结构如下(部分)-

在我的application.properties文件中,我有以下设置-

代码语言:javascript
复制
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类中添加了以下注释:

代码语言:javascript
复制
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")

这颗豆子-

代码语言:javascript
复制
@Bean
public LockProvider lockProvider(DataSource dataSource) {
    return new JdbcTemplateLockProvider(dataSource, "b4ad.shedlock");
}

ScheduledManager类中,我有一个计划的任务-

代码语言:javascript
复制
 @Scheduled(cron = "0 0/1 * * * ?")
@SchedulerLock(name = "deactivateExpiredOrganizations", lockAtLeastFor = "PT5M")
public void deactivateExpiredOrganizations() {
    // my code...
}

当我在两个实例上本地运行我的应用程序时(使用application.properties文件中的两个不同的端口),查看日志,我可以看到任务在这两个实例上运行,同时shedlock表保持为空。根据troubleshooting部分中的第二项,我似乎遗漏了一些配置,但我不知道是什么。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-01 20:30:54

显然,在我的大型项目中,有另一个配置类(除了AppConfig) --一个名为SqlSpringConfig的类,在db模块中。一旦我将LockProvider bean放在那里,所有的工作都非常出色

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64152064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档