例如,我想在每天上午12点编写一个Java程序来打印“Hello World”,如何使用Quartz调度程序来实现这一目标?
Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");
喜欢这个?我应该在哪里打印“hello world”方法?
答案 0 :(得分:7)
您可以使用表达式来安排作业的执行。 e.g:
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
。
答案 1 :(得分:1)
创建要从中安排任务的类(作业)
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();
}
}
}
答案 2 :(得分:0)
您必须通过实现Job接口并提供execute方法的实现来创建自定义作业。在execute方法中,您可以打印“hello world”。然后你可以像这样安排你的工作
scheduler.scheduleJob(job, trigger);
请参阅此链接了解详细信息: Quartz tutorial
答案 3 :(得分:0)
你可以为此创建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/
关于quartz cron表达式,请参阅石英文档
http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger