为什么我的 Quartz 触发器在重新启动 Spring boot 应用程序时没有更新更改的 Cron 表达式?

Abd*_*lah 5 java cron quartz-scheduler spring-boot

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

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

qrtz_cron_triggers表中的记录是

“quartzScheduler”“Qrtz_NEReportProcessor_Job_Trigger”“默认”“0 30 22?* *”“亚洲/加尔各答”

如何确保在重新启动我的 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();
    }
Run Code Online (Sandbox Code Playgroud)

mic*_*ldo 12

我想你忘记配置了

spring.quartz.overwrite-existing-jobs = true

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