Кластеризация Quartz Scheduler: есть ли способ однозначно запустить ТО ЖЕ задание и отложить следующее срабатывание до завершения этого же задания - PullRequest
0 голосов
/ 07 августа 2020

Я реализовал Quartz Scheduler с кластеризацией с одним jdbcstore.

У меня есть задание QzJob1, которое CRON запланировано на каждые две минуты. но задание выполняется в течение 3 минут от общего времени выполнения.

Я знаю, что узлы будут получать задания в зависимости от времени запуска, когда они будут доступны.

Итак, допустим, QzJob1 - это выполняется в NODE1 в 10:00, но завершается в 10:03. Теперь для того же задания триггер доступен в 10:02, он был поднят другим узлом, которым является NODE2. Я знаю это поведение по умолчанию.

Теперь я спрашиваю. Есть ли способ сделать это уникальным для всех узлов, чтобы до завершения этого задания оно не запускалось снова, хотя триггер готов до его завершения.

Я пытался это выяснить, но не смог никуда добраться. Так что, пожалуйста, направьте / проинструктируйте / укажите мне, чтобы я продвинулся вперед.

Благодарю за помощь.

1 Ответ

0 голосов
/ 07 августа 2020

Вам необходимо аннотировать свой класс реализации задания с помощью аннотации @DisallowConcurrentExecution. Подробнее см. https://www.quartz-scheduler.org/api/2.1.7/org/quartz/DisallowConcurrentExecution.html.

...