【问题标题】:Running Quartz.NET for a specific job every 8 hours starting from 07:00 AM从上午 07:00 开始每 8 小时运行一次 Quartz.NET 以执行特定作业
【发布时间】:2020-09-10 09:12:44
【问题描述】:

直到今天,我一直使用 Quartz.Net 来运行 cron 作业,例如,每 5 分钟一次等等。现在我被要求从早上 07:00 开始每 8 小时运行一次特定的工作。这意味着每天将执行 3 次,上午 07:00 执行一次,下午 03:00 执行一次,晚上 11:00 执行一次。

愚蠢和最简单的方法是在早上 7:00 启动应用程序并将 cron 表达式设置为每 8 小时运行一次。有没有更好的办法?

我的sn-p代码如下

   var timespanRecurringJob = configuration.GetValue<TimeSpan>("GSpedService:batchIntervalTracking");

                    logger.LogInformation($"BatchProcessorService starting with interval  {timespanRecurringJob}");

                    IJobDetail job = JobBuilder.Create<TrackingUrlRecurringJob>()
                        .WithIdentity("trackingUrlRecurringJob", "group3") // name "myJob", group "group1"
                        .Build();

                    // Trigger the job to run now, and then every 40 seconds
                    ITrigger trigger = TriggerBuilder.Create()
                        .WithIdentity("triggerTracking", "group3")
                        .StartNow()
                        .WithSimpleSchedule(x => x
                            .WithInterval(timespanRecurringJob)
                            .RepeatForever())
                        .Build();

                    // Tell quartz to schedule the job using our trigger
                    await Scheduler.ScheduleJob(job, trigger, cancellationToken);

我会以某种方式在我的 appsettings.json 中获得该信息,而不是在源代码中进行硬编码

提前致谢

【问题讨论】:

    标签: c# cron quartz.net


    【解决方案1】:

    此 cron 将在所需时间执行您的作业,而无需担心首次执行时间

    .WithCronSchedule("0 1 7,15,23 * * ?")
    

    可以使用IConfiguration.GetValue从appsettings.json 中获取值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多