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

use*_*586 28 java scheduler quartz-scheduler

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

提前致谢.

Roh*_*sal 51

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

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

  • 比创建内存泄漏设置好多耐用= true;) (6认同)

Ken*_*han 28

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

//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);
Run Code Online (Sandbox Code Playgroud)

注意 :

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

  • 该作业是持久的作业,不能将任何触发器或cron附加到它.它只能通过调用triggerJob(JobKey jobKey)以编程方式触发.

  • 仅供参考JobKey不是1.5.2 API的一部分. (2认同)