【问题标题】:Quartz scheduler -HELP NEEDED石英调度器 - 需要帮助
【发布时间】:2012-02-29 07:11:30
【问题描述】:

我有以下要求。

我必须在开始和结束日期之间启动 3-4 个调度程序,这些调度程序的时间是上午 9 点、下午 1 点、下午 5 点、晚上 10 点。这些开始和结束日期各不相同。例如:我必须在 1 月 5 日至 10 日之间启动 3 个调度程序,另一个可能是 1 月 13 日至 17 日。所以这些日期可能会有所不同。但是如上所述,这些日期的时间是固定的。但唯一的问题是我可能不得不在一天的上午 9 点和下午 1 点安排工作,而在另一天只安排在晚上 10 点,依此类推。所以次数不同。

谁能建议我可以使用哪些工作和触发器。是否可以为此使用一个调度程序?

【问题讨论】:

  • “需要紧急帮助” 1) 不要对我们大喊大叫! 2) 如需紧急帮助,请紧急寻求顾问(并向他们支付费用以匹配您的紧急程度)。
  • @Preethi:如果提供的答案解决了您的问题,最好接受答案,以便其他人知道解决方案。

标签: java quartz-scheduler


【解决方案1】:

这应该足够你开始了:

import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.triggers.AbstractTrigger;

import java.util.Calendar;

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.DateBuilder.dateOf;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;

//...

AbstractTrigger trigger = (AbstractTrigger) newTrigger()
        .withSchedule(cronSchedule("0 0 9,13,17,22 * * ?"))
        .build();
trigger.setStartTime(dateOf(0, 0, 0, 13, Calendar.JANUARY, 2012));
trigger.setEndTime(dateOf(0, 0, 0, 17, Calendar.JANUARY, 2012));

final JobDetail job = newJob(Job.class).build();

scheduler.scheduleJob(job, trigger);

更多信息请咨询官方Lesson 6: CronTrigger文档。

【讨论】:

  • 对不起,如果我没有遵守任何规则。
  • 我可以将其更改为只有一些调度程序的时间安排吗?例如:一项工作我必须安排在上午 9 点和晚上 10 点,而另一项工作我必须安排在上午 9 点、下午 1 点和晚上 10 点,同样我必须安排许多工作,并且所有这些工作的开始和结束日期会有所不同。
  • @Preethi:仔细看:0 0 9,13,17,22 * * ? - 这些数字不是随机的 :-)。提示:cron
  • 是的...感谢您的回复。那么是否可以将这些分配给一个变量并动态更改类似 int a=0 if(time is 9am){ a=9; AbstractTrigger trigger = (AbstractTrigger) newTrigger() .withSchedule(cronSchedule("0 0 a,0,10,20 * * ?")) if(time is 10pm){ a=22 AbstractTrigger trigger = (AbstractTrigger) newTrigger() . withSchedule(cronSchedule("0 0 0,0,0,a * * ?")) 像这样?
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多