У меня есть задача планировщика, которая запускается регулярно (раз в минуту).Я запускаю эту задачу, используя следующий фрагмент:
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 не были параллельными?Я хотел избежать необходимости выполнять проверки не параллелизма вручную.