动态调度作业:在 groovy 中使用 cron 触发器

Dynamically scheduling jobs: using cron trigger in groovy

我还在玩石英 scheduler.I 创建了下面的工作使用 grails create-job ,我想在这里做的很简单,那就是创建一个 触发并尝试 运行 执行 method.once 我想要的基本代码 运行 在 for 中创建多个触发器,每个触发器具有不同的 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","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 "
       }        
    }
}

首先,提供的代码无法编译。尝试将 class org.quartz.impl.StdSchedulerFactory 的实例分配给声明为 org.quartz.Scheduler.

的变量

其次,程序 运行 运行良好,作业已安排,但它在捕获任何输出之前就已存在。为了证明 运行 下面的示例带有未注释的 //while(true){}; 行。示例取自 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!");    
    }
}

希望对你有所帮助。