[英]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.