Кварцевый планировщик - синхронизация заданий - PullRequest
0 голосов
/ 08 октября 2018

Я использую Кварцевый планировщик для выполнения 10 заданий.Все эти рабочие места имеют свой собственный триггер.Таким образом, они выполняются асинхронно.

Однако теперь мне нужно, чтобы 2 из этих заданий выполнялись более определенным образом.Допустим, что Job1 выполняется каждую четную минуту, а Job2 каждую нечетную минуту.Теперь я хочу, чтобы Job2 дождался завершения Job1.Пример: Job1 начинает выполняться в 10:02.В 10:03 сработает триггер Job2.Но прежде чем Job2 начнет выполняться, он будет смотреть на Job1, если он завершен.

Я нашел аннотацию @DisallowConcurrentExecution для класса задания, который реализует интерфейс Job.Я думал, что это сработает, но потом я прочитал, что это только запретит одновременное выполнение заданий с одним и тем же JobKey (имя, группа).Но у меня не может быть такой же JobKey для моей работы.Так что эта аннотация хороша только для одной работы.

У вас есть идея, как я могу решить мою проблему?Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Проверьте сведения о существующем выполняющемся задании с помощью этого вызова и выполните соответствующие действия.

JobDetail jobDetail = scheduler.getJobDetail(jobKey);

См. Это Статус задания

0 голосов
/ 08 октября 2018

Вы можете определить статическую переменную, чтобы отметить, что Job1 завершен или нет.Когда вы создаете Job2, в своем коде вы можете проверить статическую переменную перед выполнением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...