Мы используем java-планировщик Cron4j для планирования заданий, которые выполняются каждую ночь. Теперь, когда это же веб-приложение развертывается (Tomcat) в кластере (2 узла) на сайте клиента, задания выполняются дважды. Есть ли способ избежать этой проблемы?
Задание по расписанию выполняется дважды в кластере
comment
Рассматривали ли вы запуск планировщика автономно, а не в составе кластера Tomcat?
- person Sean   schedule 10.05.2011
Ответы (3)
Я считаю, что единственный способ сделать это - использовать какое-то внешнее общее состояние, например, в базе данных, для обеспечения некоторой блокировки.
person
DaveH
schedule
10.05.2011
Используйте библиотеку Shedlock, это очень просто
@Scheduled(...)
@SchedulerLock(name = "scheduledTaskName")
public void scheduledTask() {
}
person
Thirumal
schedule
16.12.2019
Один из способов решить эту проблему - заставить ваше веб-приложение принимать параметр, например. runCronjobs
. Вы можете поместить соответствующую запись в web.xml
или в какой-либо другой файл конфигурации.
Таким образом, для одного веб-приложения это значение будет установлено на true
, а для других развертываний — на false
.
person
mindas
schedule
10.05.2011