【问题标题】:Quartz.net - misfire instructions don't workQuartz.net - 失火指令不起作用
【发布时间】:2014-01-08 10:38:16
【问题描述】:

我正在使用带有 CRON 调度的quartz.net。 我将失火指令设置为:开火并继续:

 trigger = Quartz.TriggerBuilder.Create()
                       .WithIdentity(jobData.JobId, jobData.ClientApplicationId.ToString())//.WithCronSchedule(scheduleInfo.CronExpression, WithMisfireHandlingInstructionDoNothing())
                        .WithSchedule(Quartz.CronScheduleBuilder.CronSchedule(new Quartz.CronExpression(scheduleInfo.CronExpression)).WithMisfireHandlingInstructionFireAndProceed())//.WithMisfireHandlingInstructionDoNothing())  ///.WithMisfireHandlingInstructionFireAndProceed()
                       .StartAt(DateTime.Now).ForJob(iJobDetail)
                       .Build();

根据我的阅读,如果错过了触发器,它应该在调度程序启动后立即触发 (最多一次,即使该作业应该运行多次)。

由于某种原因,当我对其进行测试时,该作业从未被触发。 假设我有一份工作应该从 4:00 开始每小时运行一次。 我在 7:30 打开调度程序,直到 8:00 才触发任何触发器。 misfireThreshold 设置为 (60000) - 一分钟。

作业是有状态的,不允许并发运行。 我正在使用持久存储 (AdoJobStore) - 将计划保存到 MSSQL DB。

知道为什么触发器没有按计划激活吗?

【问题讨论】:

  • 您使用的是持久作业存储吗?下一次触发时间是在添加作业并启动调度程序时计算的,使用 RAMJobstore,此信息会在关闭时丢失。
  • 是的,这是一件非常重要的事情——我使用的是数据库而不是 RAM 存储,我会将其添加到我的问题中。谢谢
  • 还有哪个版本?确保您运行的是最新版本。
  • 版本是 2.1.2 ,我会尝试更新。在文档中我找不到相关的错误修复,但我希望升级会有所帮助。谢谢
  • 我已经更新到 2.2.1 版,但仍然遇到同样的问题。知道如何修复它或至少分析它吗?谢谢

标签: c# .net cron quartz.net


【解决方案1】:

试试下面的代码。确保将 {YourCronExpressionString} 替换为您自己的 cron 表达式。

trigger = Quartz.TriggerBuilder.Create()
                   .WithIdentity(jobData.JobId, jobData.ClientApplicationId.ToString())
                   .WithCronSchedule("{YourCronExpressionString}", x => x.WithMisfireHandlingInstructionFireAndProceed())
                   .StartAt(DateTime.Now).ForJob(iJobDetail)
                   .Build();

来源:Quartz.NET setting MisfireInstruction

【讨论】:

    【解决方案2】:

    尝试使用 PauseJob(jobKey) 方法来触发失败

    使用 ResumeJob(jobKey) 方法再次触发

    例如:

    设置 cron 表达式:每 4 小时

    7:30,调用 pauseJob 方法

    并在 8:01 调用 resumeJob 方法

    8:00 的工作将被重新解雇

    【讨论】:

    • 这是为了测试目的吗?我通过关闭调度程序、更改计算机时间然后再次打开调度程序进行测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2017-12-06
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多