Scheduler.triggerJob不触发作业

时间:2020-05-14 12:05:40

标签: java quartz

我正在尝试在测试中执行我的石英作业,但似乎没有被触发。永远不会执行'runJob()'。没有例外,日志上没有错误。我想念什么?有什么想法吗?

@Autowired
Scheduler scheduler;

@Test
@Transactional
public void MyJobTest() {
    //Create a new Job
    JobKey jobKey = JobKey.jobKey(MyJob.class.getSimpleName(), JobGroupEnum.GROUP1.getName());
    JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(jobKey).storeDurably(true).build();
    try {
        scheduler.addJob(job, true); //Register this job to the scheduler
        scheduler.triggerJob(job.getKey()); //Immediately trigger the Job
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这是日志:

Starting Quartz Scheduler now
Scheduler quartzScheduler_$_NON_CLUSTERED started.
Started MyJobTest in 20.965 seconds (JVM running for 22.537)
Began transaction (1) for test context [DefaultTestContext@704deff2 testClass = MyJobTest, testInstance = ....
Rolled back transaction for test: [DefaultTestContext@704deff2 testClass = MyJobTest, testInstance = ....
Scheduler quartzScheduler_$_NON_CLUSTERED paused.
Shutting down ExecutorService 'applicationTaskExecutor'
Shutting down Quartz Scheduler
Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
Scheduler quartzScheduler_$_NON_CLUSTERED paused.
Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.

1 个答案:

答案 0 :(得分:0)

(基于评论建议Quartz example

triggerJob()之后添加以下行使其生效:

Thread.sleep(2L * 1000L); //sleep for 2 seconds so scheduler has time to fire off the job
scheduler.shutdown(true); //passing true tells the Quartz Scheduler to wait until all jobs have completed running
相关问题