У меня есть такой код:
private final ThreadPoolTaskScheduler threadPoolTaskScheduler; // spring
private final LockingTaskExecutor lockingTaskExecutor; // shedlock
....
threadPoolTaskScheduler.scheduleWithFixedDelay(
() -> {
lockConfiguration = ...
long start = System.currentTimeMillis();
LOGGER.info("Spring scheduler started task, awaiting shedlock ");
lockingTaskExecutor.executeWithLock((Runnable) () -> {
LOGGER.info("Shedlock acquired. duration=[{}]ms", propertyItem, System.currentTimeMillis() - start);
taks();
},
lockConfiguration);
}, someInterval);
У меня есть 2 узла. По логам вижу ситуацию, что task()
работает только на первом узле. На втором узле я вижу только Spring scheduler started task, awaiting shedlock
Я считаю, что это не должно работать таким образом, и я хочу выяснить, почему это происходит.
Как я могу подписаться на событие при снятии блокировки?
Как долго Шедлок пытается получить блокировку?
приписка
someInterval = 30 минут
lockConfiguration: по крайней мере 5 минут, atMost = 20 минут