【问题标题】:Rescheduling a One-Shot job using Quartz使用 Quartz 重新安排 One-Shot 作业
【发布时间】:2012-01-13 04:46:49
【问题描述】:

我想使用不是基于时间间隔的石英调度,而是在作业完成后重新安排作业。该作业可能在 1 分钟、2 分钟等后完成,但需要重新安排在 1(或 x)分钟后运行。

我已经尝试过以这种方式使用 Reschedule,但工作没有被解雇。

第一次排期:

Trigger alertJobTrigger = new SimpleTrigger("alertJobTrigger", 
                                            "triggerGroup1", 
                                            DateTime.UtcNow.AddSeconds(60), 
                                            null, 
                                            0, 
                                            TimeSpan.Zero);
 scheduler.ScheduleJob(alertJobDetail, alertJobTrigger);

尝试在作业完成后重新安排相同的作业:

Trigger trigger = Global.scheduler.GetTrigger("alertJobTrigger",
                                              "triggerGroup1");

Trigger newTrigger = new SimpleTrigger("alertJobTrigger",
                                        "triggerGroup1",
                                        trigger.JobName,
                                        trigger.JobGroup,
                                        DateTime.UtcNow.AddSeconds(60), 
                                        null, 
                                        0,
                                        TimeSpan.Zero);     

Global.scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, newTrigger);

【问题讨论】:

  • Reschedule 的触发器名称和触发器组错误。它应该是 Reschedule("alertJobTrigger", "triggerGroup1",...);

标签: triggers scheduling jobs quartz.net


【解决方案1】:

如果您需要以等于作业执行时间的重复间隔重新安排作业,那么您必须指示触发器执行此操作。

否则,如果您只需要在同一时间段(重复)之后执行的重复作业,那么您可以指定repeatCount = -1repeatInterval = TimeSpan.FromSeconds(..)。如果触发的作业需要更长的重复间隔时间,为了防止多次执行同一个作业,您可以在作业顶部使用 [DisallowConcurrentExecution] 属性来防止这种情况发生。

【讨论】:

    【解决方案2】:

    不要创建新的触发器。在重新安排时使用相同的触发器。 这应该有效:

    Trigger trigger = Global.scheduler.GetTrigger("alertJobTrigger","triggerGroup1");
    
    trigger.set(); //set whichever values you want.
    
    Global.scheduler.RescheduleJob(trigger.JobName, trigger.JobGroup, trigger);
    

    【讨论】:

    • 我可以知道您为上述答案考虑了哪个版本的quartz.net。
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2021-08-17
    相关资源
    最近更新 更多