簡體   English   中英

在 shedlock-spring 3.0 中使用什么來代替 ScheduledLockConfiguration Bean?

[英]What to use instead of ScheduledLockConfiguration Bean , in shedlock-spring 3.0?

我有一個 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將支持玉米格式。

@SchedulerLock , name 參數必須是唯一的, ClassName_methodName通常足以實現這一點。 我們不希望這種方法同時運行不止一次,而 ShedLock 使用唯一的名稱來實現這一點。

首先,我們添加了lockAtLeastForString以便我們可以在方法調用之間留出一些距離。 使用“PT5M”意味着此方法將至少保持鎖定 5 分鍾。 換句話說,這意味着 ShedLock 可以不超過每五分鍾運行一次此方法。

接下來,我們添加了lockAtMostForString來指定在執行節點死亡的情況下鎖應該保持多長時間。 使用“PT14M”意味着它將被鎖定不超過14分鍾。

一般情況下,ShedLock 在任務完成后直接釋放鎖。 現在,真的,我們不必這樣做,因為@EnableSchedulerLock 中提供了默認值,但我們選擇在這里覆蓋它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM