无论开始时间如何,安排每小时第 35 分钟的任务

Schedule a task of for 35th minute of every hour regardless of start time

我对 quartz 调度程序还很陌生,它比我需要的更全面。

我只想 运行 每小时 35 分钟的任务,无论应用程序何时启动。

显然这可以通过 cron 作业来完成。到目前为止我的代码是

StdSchedulerFactory factory = new StdSchedulerFactory();
        IScheduler scheduler = await factory.GetScheduler();
        await scheduler.Start();

        IJobDetail hourlyJob = JobBuilder.Create<Hourly>()
        .WithIdentity("hourlyJob", "Jobs")
        .Build();

        ITrigger hourlyJobTrigger = TriggerBuilder.Create()
            .WithIdentity("hourlyJobTrigger", "Jobs")
            .StartNow()
            .WithCronSchedule("59 0 0 ? * * *")
            .Build();


        await scheduler.ScheduleJob(hourlyJob, hourlyJobTrigger);

据我了解,这应该使任务 运行 在每 59 秒(出于测试目的)一分钟执行。不过好像没有触发。

你可以用下一个 cron 表达式来完成

0 35 0/1 ? * * *

这个cron表达式意味着它会在每天35分钟内每小时触发一次。

我们的代码将是

ITrigger hourlyJobTrigger = TriggerBuilder.Create()
            .WithIdentity("hourlyJobTrigger", "Jobs")
            .StartNow()
            .WithCronSchedule("0 35 0/1 ? * * *")
            .Build();