在ShedlockSpring3.0中,使用什么来代替ScheduledLockConfiguration Bean?
我有一个ScheduledLockConfiguration bean配置在ShedlockSpring3.0中,使用什么来代替ScheduledLockConfiguration Bean?,spring,scheduled-tasks,scheduler,shedlock,Spring,Scheduled Tasks,Scheduler,Shedlock,我有一个ScheduledLockConfiguration bean配置 @Bean public ScheduledLockConfiguration taskScheduler(LockProvider lockProvider) { return ScheduledLockConfigurationBuilder .withLockProvider(lockProvider) .withPoolSize(5) .withDefaul
@Bean
public ScheduledLockConfiguration taskScheduler(LockProvider lockProvider) {
return ScheduledLockConfigurationBuilder
.withLockProvider(lockProvider)
.withPoolSize(5)
.withDefaultLockAtMostFor(Duration.ofMinutes(5))
.build();
}
我刚刚升级到shedlock spring 3.0,我不知道用什么来代替这个Bean?我们可以像下面这样配置
@Component
class TaskScheduler {
@Scheduled(cron = "0 0 10 * * ?")
@SchedulerLock(name = "TaskScheduler_scheduledTask", lockAtLeastForString = "PT5M", lockAtMostForString = "PT14M")
public void scheduledTask() {
// ...
}
}
@Scheduled将支持corn格式
@SchedulerLock,name参数必须是唯一的,ClassName\u methodName通常足以实现这一点。我们不希望同时运行多个此方法,ShedLock使用唯一的名称来实现这一点
首先,我们添加了lockAtLeastForString,以便在方法调用之间留出一些距离。使用“PT5M”意味着此方法将保持锁至少5分钟。换句话说,这意味着ShedLock运行此方法的频率不超过每五分钟一次
接下来,我们添加了lockAtMostForString,以指定在执行节点死亡的情况下应该保持锁的时间。使用“PT14M”表示锁定时间不超过14分钟
在正常情况下,ShedLock会在任务完成后直接释放锁。实际上,我们不必这样做,因为@EnableSchedulerLock中提供了默认设置,但我们选择在这里覆盖它。我刚刚升级到shedlock spring 3.0.0。您可以通过将@ScheduledLock注释添加到计划方法中来设置“lockAtMostFor”,例如:@ScheduledLock(cron=…)@SchedulerLock(name=“ClassName_methodName”,LockAtlastForString=“PT5M”,lockAtMostForString=“PT15M”)