【问题标题】:How to handle Quartz trigger when Computer is turned off during sending push notification如何在发送推送通知期间关闭计算机时处理 Quartz 触发器
【发布时间】:2016-12-18 04:53:32
【问题描述】:

要以 24 小时为间隔每天发送推送通知,我使用了石英库。但问题是当我的电脑关闭或我的网络断开连接时,也会触发这种代码和平,但我的推送通知没有发送。我的问题是当我的电脑关闭或网络断开时如何管理触发器? 我想在我的电脑打开或连接到互联网后发送推送通知。

 ITrigger trigger = TriggerBuilder.Create()
                .WithDailyTimeIntervalSchedule
                  (s =>
                     s.WithIntervalInHours(24)
                    .OnEveryDay()
                    .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00))
                  )
                .Build();

 scheduler.ScheduleJob(job, trigger);

【问题讨论】:

  • 当你的电脑打开或连接到互联网时,也运行由计划触发的方法。
  • 对不起,你想看看我24小时后触发的工作方法吗?
  • 否,但您需要在每次应用程序启动或互联网连接恢复时触发该方法。
  • 是的,我已经添加了那部分,但是在互联网断开连接期间出现了问题。
  • 您必须构建一个新方法来检查连接性并设置一个新的间隔作业以每隔 x 秒检查一次。

标签: c# asp.net push-notification quartz-scheduler quartz.net


【解决方案1】:

您需要 Misfire InstructionsJobExecutionExceptionDisallowConcurrentExecutionAttribute 的组合

  1. 在你的作业上设置DisallowConcurrentExecutionAttribute,这样可以防止你的作业同时执行多次。

    [DisallowConcurrentExecution]
    public class MyJob : IJob
    {
    ....
    }
    
  2. Misfire Instruction 设置为您的触发器,这将告诉您的触发器在错过执行时立即触发。

    ITrigger trigger = TriggerBuilder.Create()
            .WithDailyTimeIntervalSchedule
              (s =>
                 s.WithIntervalInHours(24)
                .OnEveryDay()
                .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00))
                .WithMisfireHandlingInstructionFireAndProceed()
              )
            .Build();
    
  3. 在您的工作执行期间捕获任何异常,例如当互联网无法访问时。然后抛出 JobExecutionException 并告诉 Quartz 它应该再次触发触发器。

    public class MyJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            try
            {
                // connect to internet or whatever.....
            }
            catch(Exception)
            {
                throw new JobExecutionException(true);
            }
        }
    }
    
  4. 下次先读documentation ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多