Misfired 简单触发器正在执行作业,尽管将 misfire 策​​略设置为 "IGNORE"

Misfired Simple triggers are executing Jobs in spite of Setting misfire policy to "IGNORE"

我在 .Net 中使用 Quartz。 不管 "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);

.WithMisfireHandlingInstructionIgnoreMisfires() 尽快触发所有错过的触发器,然后返回到正常计划。您应该使用 .WithMisfireHandlingInstructionDoNothing(),触发器明确设置 "MISFIRE_INSTRUCTION_DO_NOTHING" 失火指令处理程序,这意味着所有失火的执行都将被丢弃,它只是等待下一个预定时间。如果触发器 "misses" 其触发时间发生失火,因为在 Quartz 的线程池中没有可用的线程来执行作业