Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ShedlockSpring3.0中,使用什么来代替ScheduledLockConfiguration Bean?_Spring_Scheduled Tasks_Scheduler_Shedlock - Fatal编程技术网

在ShedlockSpring3.0中,使用什么来代替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

我有一个ScheduledLockConfiguration bean配置

@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”)