例如,我想编写一个 Java 程序,在每天凌晨 12 点打印“Hello World”,我该如何使用 Quartz 调度程序来实现呢?
Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");
像这样?我应该把 print "hello world" 方法放在哪里?
例如,我想编写一个 Java 程序,在每天凌晨 12 点打印“Hello World”,我该如何使用 Quartz 调度程序来实现呢?
Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");
像这样?我应该把 print "hello world" 方法放在哪里?
您可以使用表达式来安排作业的执行。例如:
public static class HelloJob implements Job {
@Override
public void execute(JobExecutionContext ctx) throws JobExecutionException {
System.out.println("Hello World");
}
}
public static void main(String[] args) throws SchedulerException {
String exp = "0 0 0 1/1 * ? *";
SchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler = factory.getScheduler();
scheduler.start();
JobDetail job = JobBuilder.newJob(HelloJob.class).build();
Trigger trigger = TriggerBuilder.newTrigger()
.startNow()
.withSchedule(
CronScheduleBuilder.cronSchedule(exp))
.build();
scheduler.scheduleJob(job, trigger);
}
有关构建另一个表达式,请参见http://www.cronmaker.com/。例如0 0/1 * 1/1 * ? *
每分钟查看输出。另请参阅Cron Expressions
。
创建要从中安排任务的类(作业)
import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
private Logger log = Logger.getLogger(MyJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.debug("Hi....");
System.out.println("Corn Executing.....");
}
}
创建班级以安排您的任务
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class JobScheduler {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();
SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler scheduler = schFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}catch (SchedulerException e) {
e.printStackTrace();
}
}
}
您必须通过实现 Job 接口并提供执行方法的实现来创建自定义作业。在执行方法中,您可以打印“hello world”。然后你可以像这样安排你的工作
scheduler.scheduleJob(job, trigger);
有关分步详细信息,请参阅此链接: Quartz 教程
您可以为此创建 cron 表达式。要进行石英工作,您需要拥有以下对象
两种类型的触发器
简单的触发器,您可以在其中控制作业,您可以每分钟或 10 分钟运行一次,依此类推。你也可以有额外的参数
initial delay - to kick off
repeatcount - no of times the job should be executes, if -1 then job will be executed infinitely
在您的情况下,您可以使用 cron 触发器,因为您想每天上午 12 点运行。
有关更多详细信息和示例程序,请查看以下链接
http://www.mkyong.com/spring/spring-quartz-scheduler-example/
关于石英 cron 表达式,请参阅石英文档
http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger