【问题标题】:Why is my Quartz trigger not updating changed Cron expression on restart of my Spring boot application?为什么我的 Quartz 触发器在我的 Spring Boot 应用程序重新启动时没有更新更改的 Cron 表达式?
【发布时间】:2020-09-28 02:27:28
【问题描述】:

我在我的 Spring Boot 应用程序中创建了一个 Cron 计划触发器,如下所示,它被很好地触发了。问题是,当我在下面的代码中更改 Cron 计划表达式并重新启动 Spring Boot 应用程序时,Cron 计划触发器没有得到更新,并且仍在触发旧的 Cron 计划表达式值。

在检查数据库表时,我发现表 qrtz_cron_triggers 中的记录没有更新。

qrtz_cron_triggers表中的记录是

"quartzScheduler" "Qrtz_NEReportProcessor_Job_Trigger" "DEFAULT" "0 30 22 ? * *" "Asia/Calcutta"

如何确保在我的 Spring Boot 应用程序重新启动时,cron 计划表达式值得到更新?我的代码如下。

    @Bean(name = "nRJobDetail")
    public JobDetail nRJobDetail() {
        return newJob().ofType(NEReportJob.class).storeDurably().withIdentity(JobKey.jobKey("Qrtz_NEReportProcessor_Job_Detail")).withDescription("Invoke NEReportProcessor Job service...").build();
    }

    @Bean
    public Trigger nRTrigger(@Qualifier("nRJobDetail") JobDetail job) {
        return newTrigger().forJob(job).withIdentity(TriggerKey.triggerKey("Qrtz_NEReportProcessor_Job_Trigger")).withDescription("NEReportProcessor trigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 00 23 ? * *")
                )
                .build();
    }

【问题讨论】:

    标签: java spring-boot cron quartz-scheduler


    【解决方案1】:

    我想你忘了配置

    spring.quartz.overwrite-existing-jobs = true

    配置的作业是否应该覆盖现有的作业定义。

    【讨论】:

    • 谢谢@michaldo。我错过了配置这个属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多