Простые триггеры с пропусками зажигания выполняют задания, несмотря на установку политики пропуска зажигания на «IGNORE» - PullRequest
0 голосов
/ 25 июня 2018

Я использую Кварц в .Net. Независимо от "quartz.jobStore.misfireThreshold", который я установил и установил политику пропуска зажигания, чтобы игнорировать, все же я вижу, что задание выполняется.

В идеале это никогда не должно происходить.

Я инициализировал оба прослушивателя JobListener и Trigger для одного и того же Вот мой фрагмент

 var props = new NameValueCollection
            {
                { "quartz.serializer.type", "binary" },
                {"quartz.threadPool.threadCount","1" },
                {"quartz.jobStore.misfireThreshold","3000" }
            };
            var schedulerFactory = new StdSchedulerFactory(props);

            // get a scheduler
            var scheduler = await schedulerFactory.GetScheduler();
            //scheduler.CheckExists()
            await scheduler.Start();

 var job3 = JobBuilder.Create<HelloJob>()
                .WithIdentity("myJob3", "group3")
                .UsingJobData("jobSays", "Hello World 333333")
                .UsingJobData("myFloatValue", 9.423f)
                .Build();
 var trigger3  = TriggerBuilder.Create()
                .WithIdentity("trigger3", "group3")
                .WithSimpleSchedule(x => x
                    .WithMisfireHandlingInstructionIgnoreMisfires())
                .StartAt(DateTimeOffset.UtcNow)
                .Build();

            await scheduler.ScheduleJob(job3, trigger3);

1 Ответ

0 голосов
/ 27 июня 2018

.WithMisfireHandlingInstructionIgnoreMisfires() запускает все триггеры, которые были пропущены, как можно скорее, а затем возвращается к обычному расписанию. Вы должны использовать .WithMisfireHandlingInstructionDoNothing(), триггер с явно установленным обработчиком пропуска зажигания "MISFIRE_INSTRUCTION_DO_NOTHING", означающий, что все пропущенные при выполнении выполнения отбрасываются, он просто ожидает следующего запланированного времени. Пропуск зажигания происходит, если триггер «пропускает» время запуска, потому что в пуле потоков Quartz нет доступных потоков для выполнения задания

...