使用JobStoreTX不触发Quartz触发器

时间:2016-10-27 07:24:52

标签: java sql-server quartz-scheduler

我正在Quartz中创建我的第一个计划任务。对于我的项目,我需要将数据存储在数据库中。

为了启动调度程序,我使用:

scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();

我创建了一个简单的工作来测试调度

package com.atlascopco.framework.schedule.jobs;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class StoredProcedureJob implements Job {

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {


        System.out.println("test"); 

    }

}

在我的数据库中,我手动创建了一些记录。 JOB_DETAILS

SCHED_NAME  JOB_NAME    JOB_GROUP   DESCRIPTION JOB_CLASS_NAME  IS_DURABLE  IS_NONCONCURRENT    IS_UPDATE_DATA  REQUESTS_RECOVERY   JOB_DATA
test    test    test    test    com.atlascopco.framework.schedule.jobs.StoredProcedureJob   1   1   1   1   NULL

TRIGGERS

SCHED_NAME  TRIGGER_NAME    TRIGGER_GROUP   JOB_NAME    JOB_GROUP   DESCRIPTION NEXT_FIRE_TIME  PREV_FIRE_TIME  PRIORITY    TRIGGER_STATE   TRIGGER_TYPE    START_TIME  END_TIME    CALENDAR_NAME   MISFIRE_INSTR   JOB_DATA
test    test    test    test    test    test    1477559872000   NULL    NULL    WAITING SIMPLE  1477559872000   NULL    NULL    NULL    NULL

SIMPLE_TRIGGERS

SCHED_NAME  TRIGGER_NAME    TRIGGER_GROUP   REPEAT_COUNT    REPEAT_INTERVAL TIMES_TRIGGERED
test    test    test    10  1000    0

现在,当我启动应用程序时,调度程序启动。在常规时间,调度程序的日志正在添加新行(没有错误仅调试消息)。我开始这份工作有什么不对?

当我正在进行scheduler.getTriggerGroupNames()时,列表为空。

1 个答案:

答案 0 :(得分:0)

找到一种使用Quartz

的API保存数据库中的作业的方法
JobDetail jobDetail = JobBuilder.newJob(StoredProcedureJob.class)
                    .withIdentity("dataJob", "dataJobGroup")
                    .storeDurably(true)
                    .requestRecovery(true)
                    .build();

            SimpleTrigger trigger = (SimpleTrigger) newTrigger()
                    .withIdentity("trigger1", "dataJobGroup")
                     .startNow()
                    .withSchedule(
                            simpleSchedule().withIntervalInSeconds(1)
                                    .repeatForever()).build();

            scheduler.scheduleJob(jobDetail, trigger);