首页 文章

Quartz cron表达式以间隔分钟运行作业

提问于
浏览
2

我想知道是否有可能编写一个有几个条件的cron表达式:

  • 作业应以给定的间隔(分钟)运行 . 例如,间隔为42分钟,开火时间为 10:0010:4211:2412:06 等 .

  • 如果当前分钟未以 0 结尾(例如 10:2810:29 ),则cron首次触发时间应为 10:30 . 所以这意味着第一次开火时间应该是"round"分钟 .

我希望你了解这些条件 . 是否可以用石英cron描述它们?

3 回答

  • 0

    您可以使用Quartz.net 3.0中描述的作业触发器:

    var jobTrigger = TriggerBuilder.Create()
                    .StartNow()
                    .WithSimpleSchedule(s => s
                        .WithIntervalInMinutes(42)
                        .RepeatForever())
                    .Build();
    

    并且您可以在第一轮时间重新启动应用程序,因此它将仅在同一时间第一次启动 .

  • 1

    我通常使用http://www.cronmaker.com/来生成我的cron表达式 . 如果您尝试每42分钟选项,您将获得以下表达式:" 0 0/42 * 1/1 * ? *" . 至于"round"分钟的事情,你可以在构建你的触发器时尝试这个:

    ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity(JobTrigger, JobGroup)
                .WithCronSchedule(CroneExpression)
                .StartAt(new DateTimeOffset(DateTime.Now, 
                 TimeSpan.FromMinutes(DateTime.Now.Minute % 10)))
                .Build();
    
  • 0
    • 这是不可能的,请参阅解释和类似问题:Quartz.net - Repeat on day n, of every m months?

    • Cron表达式也不可能 . 为此,您需要应用一些复杂的逻辑,使用评估器中不存在的某些运算符 . 你为什么需要这个?您想结合这两个要求并创建单一的复杂模式吗?

相关问题