问题描述
我使用的是带有 JDBC 集成的 Shedlock 4.22.0 版。 我有一个配置类
@Configuration
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")public class ShedLockConfiguration {
public class ShedLockConfiguration {
@Bean
public LockProvider lockProvider(DataSource dataSource) {
return new JdbcTemplateLockProvider(dataSource);
}
}
为了执行,我使用注解@SchedulerLock 例如。
@SchedulerLock(name = "MyTask",lockAtMostFor = "PT1M",lockAtLeastFor = "PT1M")
一切都在本地 PC 上完美运行,但当应用部署在 Kubernetes (AKS) 上时,不会触发任何任务。日志是空的。应用启动后什么都不做
我还对 spring 配置添加了调试
logging:
level:
net.javacrumbs.shedlock: DEBUG
什么都没有记录
解决方法
执行应由 @Scheduled
annotation 触发。 ShedLock 只阻止并行任务执行,它不安排任何事情。如果您有 @Scheduled
注释,请按照 troubleshooting 中的说明检查数据库中的 shedlock
表。
我解决了问题。问题在于服务器上的时区。由于本地 PC 上的时区不同,任务提前 1 小时锁定。我从 shedlock 表中删除了所有行