【问题标题】:Scheduling a Quartz job调度 Quartz 作业
【发布时间】:2015-05-11 23:46:08
【问题描述】:

我想开发一个石英作业,它将在作业中指定的特定时间运行。但是,当我开始工作时,它不是在代码中指定的那个时间开始的。

请帮忙。

这是我的代码:

import java.util.TimeZone;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class CronScheluderForActivityMilestone {

public boolean CronScheluderForActivityMilestone() throws Exception {

    SchedulerFactory sf = new StdSchedulerFactory();
    Scheduler sche = sf.getScheduler();
    sche.start();
    JobDetail jDetail = new JobDetail("SendMailOnActivityMileStone", "SendMailOnActivityMileStone", ActivityMileStoneSendMail.class);

    Trigger trigger = TriggerBuilder.newTrigger()
            .withIdentity("mytriggerForActivityMileStone", "SendMailOnActivityMileStone")
            .withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(19, 00).inTimeZone(TimeZone.getTimeZone("Asia/Calcutta")))
            .forJob("SendMailOnActivityMileStone", "SendMailOnActivityMileStone")
            .build();

   sche.scheduleJob(jDetail, trigger);      
    return true;    
   }
  }

【问题讨论】:

  • 不设置 inTimeZone 可以试试吗?另外,由于 JobDetail 是一个接口,你可以用下面的替换吗? JobDetail jDetail = newJob(ActivityMileStoneSendMail.class).withIdentity("SendMailOnActivityMileStone", "SendMailOnActivityMileStone").build();

标签: java cron quartz-scheduler job-scheduling


【解决方案1】:

你应该像这样改变你的 inTimeZone 配置:

Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger3", "group1")
.withSchedule(weeklyOnDayAndHourAndMinute(DateBuilder.WEDNESDAY, 10, 42)
.inTimeZone(TimeZone.getTimeZone("America/Los_Angeles")))
.forJob(job)
.build();

inTimeZone 属于 withSchedule()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多