【问题标题】:Quartz.net trigger doesn't fireQuartz.net 触发器不触发
【发布时间】:2017-05-28 20:43:08
【问题描述】:

我有两个任务。第一个应该每小时执行一次,第二个应该在每天 12:00 执行。第一个任务的触发器工作正常,但第二个任务只有在目标时间前几分钟创建时才会触发。我做错了什么?

第一个配置:

IJobDetail job = JobBuilder.Create<WatchJob>()
    .WithIdentity("Job_1", "First")
    .WithDescription("Job_1_First")
    .UsingJobData("AppData", JsonConvert.SerializeObject("Job_1_First"))
    .Build();

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("Trigger_1", "First")
    .StartNow()
    .WithSimpleSchedule(x => x
    .WithIntervalInMinutes(1440)
    .RepeatForever())
    .Build();

第二个:

    IJobDetail updateJob = JobBuilder.Create<UpdateJob>()
        .WithIdentity("Job_1", "Second")
        .WithDescription("Job_1_Second")
        .UsingJobData("AppData", JsonConvert.SerializeObject("Job_1_Second"))
        .Build();

    ITrigger updateTrigger = TriggerBuilder.Create()
        .WithIdentity("Trigger_1", "Second")
        .WithDailyTimeIntervalSchedule
            (t => t
                .WithIntervalInHours(24)
                .OnEveryDay()
                .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(12, 0))
            )
        .Build();

调度器配置:

<quartz>
  <add key="quartz.scheduler.instanceName" value="Test" />
  <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
  <add key="quartz.threadPool.threadCount" value="1" />
  <add key="quartz.threadPool.threadPriority" value="2" />
  <add key="quartz.jobStore.misfireThreshold" value="60000" />
  <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
</quartz>

【问题讨论】:

  • 您使用哪个版本的石英?它是一个 Asp.Net 项目吗?
  • @Rabban,我在控制台应用程序中使用 Quartz 2.4.1

标签: quartz.net


【解决方案1】:

您的触发器定义似乎没有错。但是 Quartz(2.x) 在底层写得不是很好,有时会表现得很奇怪。 您的第二个触发器是 CronTrigger,可以用其他方式定义。

这对我有用:

 ITrigger updateTrigger = TriggerBuilder.Create()
    .WithIdentity("Trigger_1", "Second")
    .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(12, 0))
    // this line tells quartz to start the trigger immediately, you can remove it, if you don't want this behaviour
    .StartAt(DateTime.Now.AddDays(-1)) 
    .Build();

【讨论】:

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