java quartz scheduler立即开始一项新工作

时间:2012-03-27 13:11:53

标签: java quartz-scheduler scheduler

是否可以创建一个立即触发的作业? 当我想让这个工作成为现在的时候我用现在的日期和时间来建立一个cron表达式字符串 - 我觉得它太复杂了,还有另一种方法可以立即触发这个工作吗?

感谢提前。

3 个答案:

答案 0 :(得分:50)

是的,请使用以下Trigger立即解雇您的工作,而不是等待Cron表达式。

    String jobName = ""; // Your Job Name
    String groupName = ""; // Your Job Group
    Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity(jobName, groupName)
                .startNow()
                .build();

答案 1 :(得分:28)

在Quartz Scheduler中注册的所有作业都由JobKey唯一标识,JobKey由名称和组组成。您可以通过调用triggerJob(JobKey jobKey)个实例的Scheduler来立即触发具有给定start()的作业。

//Create a new Job 
JobKey jobKey = JobKey.jobKey("myNewJob", "myJobGroup");
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(jobKey).storeDurably().build();

//Register this job to the scheduler
scheduler.addJob(job, true);

//Immediately fire the Job MyJob.class
scheduler.triggerJob(jobKey);

注意:

  • scheduler是整个应用程序中使用的Scheduler实例。它的triggerJob(JobKey jobKey)方法应该在创建后调用。

  • 作业是持久的作业,不能附加任何触发器或cron。它只能通过调用{{3}}以编程方式触发。

答案 2 :(得分:0)

您可以使用2个键字符串值动态创建“JobKey”。

IScheduler sched = /* however you get your scheduler*/;

sched.TriggerJob(new JobKey("myname", "mygroup"));