Запланируйте две разные непараллельные работы с Quartz - PullRequest
0 голосов
/ 05 октября 2018

У меня есть задача планировщика, которая запускается регулярно (раз в минуту).Я запускаю эту задачу, используя следующий фрагмент:

Scheduler = await StdSchedulerFactory.GetDefaultScheduler().ConfigureAwait(false);
await Scheduler.Start().ConfigureAwait(false);
JobDetail = JobBuilder.Create<SchedulerJob>().Build();
Trigger = TriggerBuilder.Create().StartNow().WithPriority(1).WithCronSchedule(cronExpression).Build();
await Scheduler.ScheduleJob(JobDetail, Trigger).ConfigureAwait(false);

Что я хочу / нужно сделать сейчас - это запланировать вторую отдельную задачу, которая не является параллельной.Это означает, что вторая новая задача имеет приоритет, всегда выполняется, когда оба они вызываются одновременно, а первая задача ожидает или не выполняется.

Оба класса (SchedulerJob и новый класс) помечены как [DisallowConcurrentExecution], ноони по-прежнему работают одновременно.

Я также попробовал два варианта с JobDataMap:

  • Повторное использование JobDetail, использование с другим JobDataMap -> Проблема в том, что планировщик не позволяет планироватьснова тот же JobDetail с другой картой.
  • Создайте новый JobDetail с тем же классом, с другим JobDataMap, в том же классе -> Проблема в том, что они все еще выполняются в одно и то же время, [DisallowConcurrentExecution] не имеет никакого эффекта

Есть ли встроенный способ с Quartz, чтобы два отдельных JobDetails / Job Class не были параллельными?Я хотел избежать необходимости выполнять проверки не параллелизма вручную.

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