Проблемы с использованием GetDefaultScheduler несколько раз - PullRequest
0 голосов
/ 04 апреля 2019

Я новичок в Quartz.net и c#. Имеем следующий код, чтобы запланировать задачу.Ожидается, что он изменит время расписания, если его запустить несколько раз.Но планировщик всегда запускался, возвращал значение false и заканчивал тем, что создавал новый вместо того, чтобы вносить поправки в существующий

public static async Task scheduleCosmosScaling(CosmosPayLoad payload)
        {
            DateTime starttime = DateTime.Now.AddMinutes(payload.minutes);
            logger.Info("Starting  the schedule process with  execution time ( "+ starttime + " ) for" + payload.cosmosDb + "/" + payload.cosmosCollection );

            string group = "Group_" + payload.cosmosName + "_DB_" + payload.cosmosDb;
            string triggerName = "Trigger" + payload.cosmosCollection;
            string jobName = "Job" + payload.cosmosCollection;
            scheduler = await StdSchedulerFactory.GetDefaultScheduler(); //DefaultQuartzScheduler
            if (!scheduler.IsStarted)
            {
                logger.Info("Starting scheduler");
                await scheduler.Start();
            }
            ITrigger oldTrigger = await scheduler.GetTrigger(new TriggerKey(triggerName, group));
            if (oldTrigger != null) {
                IJobDetail  jobDetail = (scheduler.GetJobDetail(new JobKey(triggerName, group))).Result;
                int rescheduleRU = ((CosmosPayLoad)jobDetail.JobDataMap.Get("cosmospayload")).cosmosOldRU;
                logger.Info("Rescheduling the existing schedule with new execution time ( " + starttime + " ) with RU value " + rescheduleRU);
                var triggerBuilder = oldTrigger.GetTriggerBuilder();
                var newTrigger  = triggerBuilder.StartAt(starttime).WithIdentity(triggerName, group).Build();
                await scheduler.RescheduleJob(oldTrigger.Key, newTrigger);
            } else  {
                logger.Info("Creating new schedule with execution time ( " + starttime + " )  with RU value " + payload.cosmosOldRU);
                IJobDetail job = JobBuilder.Create<CosmosScheduler>().WithIdentity(jobName, group).Build();
                job.JobDataMap["cosmospayload"] = payload;
                ITrigger trigger = TriggerBuilder.Create().WithIdentity(triggerName, group).StartAt(starttime).WithPriority(1).Build();
                await scheduler.ScheduleJob(job, trigger);
            }
            logger.Info("Rescheduling / Scheduling completed  for" + payload.cosmosDb + "/" + payload.cosmosCollection);
        }

. Ожидается, что он вернет тот же экземпляр планировщика, и должен быть bale для редактирования триггера

.
...