动态调度作业:在groovy中使用cron触发器 [英] Dynamically scheduling jobs: using cron trigger in groovy

查看:122
本文介绍了动态调度作业:在groovy中使用cron触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我仍在玩石英调度器。我使用
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆