从上午07:00开始,每8小时为特定作业运行一次Quartz.NET



直到今天,我一直使用Quartz.Net运行cron作业,例如,每5分钟运行一次。现在,我被要求从07:00 AM开始,每8小时运行一次特定作业。这意味着每天将有3次执行,一次在07:00 AM执行,一个在03:00 PM执行,最后一次在11:PM执行。

愚蠢而简单的方法是在07:00启动应用程序,并将cron表达式设置为每8小时运行一次。有更好的方法吗?

我的代码片段如下

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中以某种方式获得这些信息,而不是在源中硬编码

提前感谢

这个cron将在所需的时间内执行您的作业,而不必担心第一次执行时间

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

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

最新更新