【问题标题】:How to handle a recurrent job with a reminder in Quartz.NET如何在 Quartz.NET 中处理带有提醒的周期性工作
【发布时间】:2012-02-15 20:56:00
【问题描述】:

我正在使用 Quartz.NET 并面临以下任务:

安排每 10 分钟解雇一次工作,并在每次发生前 1 分钟提醒。

您知道是否可以设计一个触发器来做到这一点?

如果可能,我想避免处理 2 个触发器(一个用于提醒,一个用于工作)。

我将为提醒和作业使用相同的 IStatefulJob 类,在 JobDataMap 中添加一个 bool IsReminder

可能有一个 cron 命令可以做到这一点,但恐怕我对 cron 一无所知...

编辑:我只是想补充一点,2 触发器解决方案工作得很好,所以这只是为了获得更简洁的代码(并且我的调度程序中的作业减少了一半)

【问题讨论】:

    标签: .net quartz.net


    【解决方案1】:

    为了记录,我会回答我自己的问题。

    一种解决方案是使用两个移位触发器,时间等于您要设置的提醒时间:

     //Let's set a recurrent task, starting 10 seconds from now, and firing every 20 seconds, with a 5 seconds reminder.
     DateTime startTime = DateTime.UtcNow.AddSeconds(10);
    
     SimpleTrigger remindertrigger = new SimpleTrigger("reminderTrigger",
                  null,
                  startTime.AddSeconds(-5), //Reminder time shift
                  null,
                  SimpleTrigger.RepeatIndefinitely,
                  TimeSpan.FromSeconds(20));
    
    
    SimpleTrigger strigger = new SimpleTrigger("taskTrigger",
                  null,
                  startTime,
                  null,
                  SimpleTrigger.RepeatIndefinitely,
                  TimeSpan.FromSeconds(20));
    

    您现在可以将这些触发器附加到两个作业。

    另一种解决方案是仅为提醒设置触发器,并在触发器 Execute 方法中为任务创建作业。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2023-03-14
      相关资源
      最近更新 更多