Моя цель - создать систему очередей, в которой я могу указать максимальное количество одновременных заданий для каждой группы, то есть для группы A одновременно должны выполняться не более 3 заданий, для группы B - макс. Y заданий и т. Д. Задания могут выполняться как по расписанию cron и только один раз с SimpleTrigger, поэтому я не могу проверить очередь при планировании задания, я должен проверять ее до или во время выполнения. Я реализую прослушиватель заданий и пытаюсь предотвратить выполнение в методе jobToBeExecuted (). Я пробовал scheduler.interrupt (), но он не работает, когда работа еще не началась. scheduler.deletejob () и scheduler.unschedule () тоже не остановили его выполнение.
Любые идеи?
public class JobQueueListener implements JobListener {
@Override
public void jobToBeExecuted(JobExecutionContext context) {
JobKey currentJobKey = context.getJobDetail().getKey();
JobDetail jobDetail = context.getJobDetail();
Scheduler scheduler = context.getScheduler();
if (shouldBePutInQueue(currentJobKey)) {
/// Prevent execution and put in queue here, but how?
}
}
@Override
public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
//Check queue and execute next in queue
}
}