使用 CronScheduleBuilder.cronSchedule 时,在 Spring Boot 中完全没有进入 Quartz mysql 表

问题描述

public abstract class OrderServiceJob extends QuartzJobBean{

    @Autowired
    private Scheduler scheduler;


    public void scheduleCronJob(String cronExpression,Class className) {
        JobDetail jobDetail = buildJobDetail(className);
        Trigger trigger = buildCronJobTrigger(jobDetail,cronExpression);

        try {
            scheduler.scheduleJob(jobDetail,trigger);
            log.info(String.format("job scheduled by class %s",this.getClass().getSimpleName()));
        }
        catch (SchedulerException e) {
            String errorMsg = String.format("job scheduled by class %s",this.getClass().getSimpleName());
            log.error(errorMsg,e);
            NewRelic.noticeError(e);
        }
    }

    private JobDetail buildJobDetail(Class className)  {
        return JobBuilder.newJob(className)
                .withIdentity(UUID.randomUUID().toString(),this.getClass().getSimpleName())
                .withDescription(this.getClass().getName())
                .storeDurably()
                .build();
    }

    private Trigger buildCronJobTrigger(JobDetail jobDetail,String cronExpression){
        return TriggerBuilder.newTrigger()
                .withIdentity(jobDetail.getKey().getName(),jobDetail.getKey().getName() + "-triggers")
                .withDescription(jobDetail.getKey().getName() + "-triggers")
                .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
                .build();
    }
}
org:
  quartz:
    threadPool:
      class: org.quartz.simpl.SimpleThreadPool
      threadCount: 25
      threadPriority: 5
    jobStore:
      class: org.quartz.impl.jdbcjobstore.JobStoreTX
      useProperties: false
      dataSource: quartzDataSource
      tablePrefix: QRTZ_
      isClustered: true
      clusterCheckinInterval: 20000
    dataSource:
      quartzDataSource:
        driver: com.MysqL.cj.jdbc.Driver
        URL: ${datasource.order-service.url}
        user: ${datasource.order-service.username}
        password: ${datasource.order-service.password}

以下代码能够使用 Quartz 安排 cron,但不能插入根据 Quartz 文档创建的表,我有多个服务器,并且希望一次在每台机器上运行一个作业,即轮换,我们如何做到这一点并插入石英模式中的记录

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)