我有以下在多个实例中运行的预定作业。
@Scheduled(fixedRate = 10000)
@SchedulerLock(name = "AwesomeJob", lockAtLeastForString = "5S", lockAtMostForString = "5S")
public void awesomeJob() throws InterruptedException {
for (int i = 0; i < 5; i++) {
log.info("Processing {}", i);
Thread.sleep(100000L);
}
}
我知道如果任务花费的时间比 lockAtMostFor 更长,则结果行为可能是不可预测的。有没有办法通过使用 SimpleLock.extend 方法来避免这种行为?我正在使用 JdbcLockProvider。我从https://github.com/lukas-krecan/ShedLock/issues/151得到了这个想法。