动态调度作业:在groovy中使用cron触发器 [英] Dynamically scheduling jobs: using cron trigger in groovy
问题描述
我仍在玩石英调度器。我使用
grails create-job创建了下面的工作,我在这里想要做的事很简单,那就是创建一个
触发器并尝试运行执行method.once这个基本的代码运行我想
创建多个触发器,每个具有不同的cron调度值,在
循环内(具有不同执行时间的多个触发器),并运行执行
方法并执行 sched.scheduleJob(triggerName)
这些触发器的列表
import org.quartz。*
import org.quartz.Trigger
import static org.quartz.JobBuilder。*;
import static org.quartz.CronScheduleBuilder。*;
import static org.quartz.TriggerBuilder。*;
public class TrialJob
{
public static void main(String [] args)
{
JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity( dummyJobName1\" , 组11)建立();
CronTrigger trigger = newTrigger()。withIdentity(trigger,group1)。withSchedule(cronSchedule(0 55 15 * *?))。build();
Scheduler scheduler = new StdSchedulerFactory()。getScheduler();
scheduler.scheduleJob(job,trigger);
scheduler.start();
// while(true){};
}
公共静态类TestJob实现Job
{
public void execute(JobExecutionContext context)throws JobExecutionException
{
println
}
}
}
org.quartz.impl.StdSchedulerFactory
的实例赋值给声明为 org.quartz.Scheduler
。 其次,程序运行良好,工作按计划进行,但在任何输出被捕获之前存在。为了证明它运行在下面的例子中,未注释 // while(true){};
行。该示例取自此处。
@Grab(group ='org.quartz-scheduler',module ='quartz',version ='2.2.1')
import org.quartz。*;
import org.quartz.impl.StdSchedulerFactory;
public class CronTriggerExample {
public static void main(String [] args)throws Exception {
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity (dummyJobName1,group11)。build();
触发器触发器= TriggerBuilder
.newTrigger()
.withIdentity(dummyTriggerName1,group11)
.withSchedule(CronScheduleBuilder.cronSchedule(0/5 *)* *?))
.build();
Scheduler scheduler = new StdSchedulerFactory()。getScheduler();
scheduler.start();
scheduler.scheduleJob(job,trigger);
// while(true){};
$ b $ public class HelloJob implements Job {
public void execute(JobExecutionContext context)throws JobExecutionException {
System.out.println(Hello石英!);
}
}
希望对你有所帮助。
I am still playing around with quartz scheduler.I created the below job using
grails create-job ,what i am trying to do here is simple, that is create a
trigger and try to run the execute method.once this basic code runs i want to
create multiple triggers each with different cron schedule value, inside a for
loop(multiple triggers with different execution time) and run the execute
method and do sched.scheduleJob(triggerName)
over list of these triggers
import org.quartz.*
import org.quartz.Trigger
import static org.quartz.JobBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.TriggerBuilder.*;
public class TrialJob
{
public static void main(String[] args)
{
JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity("dummyJobName1","group11").build();
CronTrigger trigger = newTrigger().withIdentity("trigger","group1").withSchedule(cronSchedule("0 55 15 * * ?")).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.scheduleJob(job,trigger);
scheduler.start();
//while(true){};
}
public static class TestJob implements Job
{
public void execute(JobExecutionContext context) throws JobExecutionException
{
println "inside execute "
}
}
}
First of all the code provided doesn't compile. There's an attempt of assigning instance of class org.quartz.impl.StdSchedulerFactory
to a variable declared as org.quartz.Scheduler
.
Secondly the program runs well and the job is scheduled but the it exists before any output is caught. To prove it run below example with uncommented //while(true){};
line. The example is taken from here.
@Grab(group='org.quartz-scheduler', module='quartz', version='2.2.1')
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class CronTriggerExample {
public static void main( String[] args ) throws Exception {
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("dummyJobName1", "group11").build();
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("dummyTriggerName1", "group11")
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
.build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
//while(true){};
}
}
public class HelloJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello Quartz!");
}
}
Hope that helped you.
这篇关于动态调度作业:在groovy中使用cron触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!