spring - 在 shedlock-spring 3.0 中使用什么来代替 ScheduledLockConfiguration Bean?
问题描述
我有一个 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 中提供了默认值,但我们选择在这里覆盖它。
推荐阅读
- python - 应用文件中的过滤条件并将其解析为 pandas 数据框
- typescript - Cielo Payment 和 Google Cloud 功能的付款授权问题
- next.js - 在 GitHub 页面上托管 Nextra(Next.js 静态站点生成器)网站
- python - Python Matplotlib 两次绘制不同数据的图表
- r - 为什么 dplyr case_when 不能正常工作?
- kubernetes - RKE2 Kubernetes 分发中的 Pod 到 Pod 通信失败
- javascript - 从javascript将参数传递给php中的函数
- sas - 在 SAS Proc SQL 中,“。”是什么意思?作为列名是什么意思?
- python - 如何删除重复行而不在 CSV 文件中创建空行?
- file - 使用 getline 逐行读取文件