问题描述
我使用的是 shedlock 库 4.20.0。
net.javacrumbs.shedlock shedlock-spring 4.20.0 net.javacrumbs.shedlock shedlock-provider-jdbc-template 2.1.0
调度工作是,
@scheduled(fixedrate = 5000)
@SchedulerLock(name = "TaskScheduler__scheduledTask",lockAtLeastForString = "PT5M",lockAtMostForString = "PT14M")
public void reportCurrentTime() {
LockAssert.assertLocked();
log.info("The time is Now {} {}",dateFormat.format(new Date()),dataSource);
}
它显示@SchedulerLock 已被弃用。
还有 Spring Boot 类,
@SpringBootApplication
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
public class DMSCaseEmulatorSpringApplication {
public static void main(String[] args) {
SpringApplication.run(DMSCaseEmulatorSpringApplication.class,args);
}
}
当我执行 spring boot 类时,它会触发 shedlock 并在数据库表中创建一条记录,但在日志中我一直得到如下,
19:54:39.188 [scheduling-1] DEBUG n.j.s.c.DefaultLockingTaskExecutor - Locked TaskScheduler__scheduledTask.
19:54:39.188 [scheduling-1] INFO u.g.h.c.d.s.ScheduledTasks - The time is Now 19:54:39 HikariDataSource (HikariPool-1)
19:54:39.205 [scheduling-1] DEBUG n.j.s.c.DefaultLockingTaskExecutor - Unlocked TaskScheduler__scheduledTask.
19:54:44.065 [scheduling-1] DEBUG n.j.s.c.DefaultLockingTaskExecutor - Not executing TaskScheduler__scheduledTask. It's locked.
19:54:49.062 [scheduling-1] DEBUG n.j.s.c.DefaultLockingTaskExecutor - Not executing TaskScheduler__scheduledTask. It's locked.
任何想法将不胜感激?
解决方法
问题是由 lockAtLeastForString = "PT5M"
引起的 通过指定,您是说即使任务提前完成,锁也应至少保持 5 分钟。
关于弃用警告,请查阅 JavaDoc。