Quartz does not resume after reboot - JDBCJobStore

I implemented the Quartz scheduler for a Java project. I also set up JDBCJobStore to store all jobs in the MySQL database so that it can resume after a restart. The problem that I am facing right now is that the scheduler does not start any tasks when the application starts. When I comment on the JDBCJobStore configuration, the scheduler works as expected, but it just does not work with the JDBCJobStore configuration. I have added classes and configuration file below. Am I missing something? Any help would be greatly appreciated.

quartz.properties

org.quartz.scheduler.instanceName=Scheduler Instance
org.quartz.scheduler.instanceId=AUTO
org.quartz.scheduler.rmi.export=false
org.quartz.scheduler.rmi.proxy=false
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.dataSource=myDS
org.quartz.jobListener.listener.class=com.jobs.SchedulerJobListener
org.quartz.dataSource.myDS.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL=jdbc:mysql://[host]:[port]/[db]?useSSL=false
org.quartz.dataSource.myDS.user=[user]
org.quartz.dataSource.myDS.password=[pass]
org.quartz.dataSource.myDS.maxConnections=30
org.quartz.dataSource.myDS.validationQuery=SELECT 1

FutureEventScheduler.java

public class FutureEventScheduler {
  private Scheduler scheduler = null;
  private JobDetail job;
  private Trigger trigger;
  private Logger logger = Logger.getLogger(FutureEventScheduler.class);

  private void initialize() {
    try {
      scheduler = new StdSchedulerFactory().getScheduler();
      job = JobBuilder.newJob(FutureEventSchedulerJob.class).withIdentity("Future Event Job", Config.getSdkName()).requestRecovery(true).storeDurably(true).build();
      trigger = TriggerBuilder.newTrigger().withIdentity("Future Event Trigger", Config.getSdkName()).withSchedule(
          CronScheduleBuilder.cronSchedule("*/3 * * * * ?")
      ).build();

    } catch (SchedulerException e) {
      logger.error(e.getMessage(), e);
    }
  }

  public FutureEventScheduler() {
    initialize();
  }

  public void start() throws SchedulerException {
    scheduler.start();
    try {
      scheduler.scheduleJob(job, trigger);
    } catch (ObjectAlreadyExistsException e) {
      logger.info("Already exists in database. Will restore it. " + e.getMessage());
    }
  }

  public void stop() throws SchedulerException {
    scheduler.shutdown();
  }

FutureEventSchedulerJob.java

public class FutureEventSchedulerJob implements Job {

  private static Logger logger = Logger.getLogger(FutureEventSchedulerJob.class);

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

    logger.debug("future job");

  }
}
+4
source share

Source: https://habr.com/ru/post/1659153/


All Articles