Java 为什么我的石英作业没有根据给定的cron表达式触发,而是每10分钟触发一次?

Java 为什么我的石英作业没有根据给定的cron表达式触发,而是每10分钟触发一次?,java,cron,quartz-scheduler,quartz,Java,Cron,Quartz Scheduler,Quartz,我正在尝试创建一个作业,它将在每个星期六晚上8点运行,使用cron表达式输入到触发器调度器。但我的工作每10分钟就被执行一次?我到底做错了什么,请帮帮我。我的应用程序设置堆栈是Spring Boot+Hibernate。代码如下 @Bean(name = "emailReportJobDetail") public JobDetail emailReportJobDetail() { return newJob().ofType(EmailReportJob.cl

我正在尝试创建一个作业,它将在每个星期六晚上8点运行,使用cron表达式输入到触发器调度器。但我的工作每10分钟就被执行一次?我到底做错了什么,请帮帮我。我的应用程序设置堆栈是Spring Boot+Hibernate。代码如下

    @Bean(name = "emailReportJobDetail")
    public JobDetail emailReportJobDetail() {
        return newJob().ofType(EmailReportJob.class).storeDurably().withIdentity(JobKey.jobKey("Qrtz_EmailReportProcessor")).withDescription("Invoke EmailReportProcessor Job service...").build();
    }

    @Bean
    public Trigger emailReportTrigger(@Qualifier("emailReportJobDetail") JobDetail job) {

        logger.info("Configuring emailReportTrigger to fire every Saturday 8 PM GMT");

        return newTrigger().forJob(job).withIdentity(TriggerKey.triggerKey("Qrtz_EmailReportProcessor")).withDescription("EmailReportProcessor trigger")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 20 ? * SAT")
                )
                .build();
    }
格式:

所以根据这个
020**sat
将在每个周六晚上8:00运行

一个有用的工具是:您可以在其中输入表达式并输出结果。

格式:

所以根据这个
020**sat
将在每个周六晚上8:00运行


一个有用的工具是:您可以在其中输入表达式并输出结果。

尝试设置cron expression
020?*7
并添加时区

return  newTrigger()
        .forJob(job)
        .withIdentity(TriggerKey.triggerKey("Qrtz_EmailReportProcessor"))
        .inTimeZone(TimeZone.getTimeZone(YOUR_TIME_ZONE))
        .withDescription("EmailReportProcessor trigger")
        .withSchedule(CronScheduleBuilder.cronSchedule("0 0 20 ? * 7"))
        .build();

通过cron表达式
020?*SAT
也是正确的尝试此操作并在
EmailReportJob
类中保留日志。

尝试设置cron表达式
0 20?*7
并添加时区

return  newTrigger()
        .forJob(job)
        .withIdentity(TriggerKey.triggerKey("Qrtz_EmailReportProcessor"))
        .inTimeZone(TimeZone.getTimeZone(YOUR_TIME_ZONE))
        .withDescription("EmailReportProcessor trigger")
        .withSchedule(CronScheduleBuilder.cronSchedule("0 0 20 ? * 7"))
        .build();

通过cron表达式
020?*SAT
也是正确的尝试此操作并在
EmailReportJob
类中保留日志。

大多数情况下,数据库中有同名的作业,必须由集群的其他成员更新

您可以尝试重命名作业(jobkey),或者检查数据库是否未被其他人使用


不过,作业会在启动时更新其配置。

大多数情况下,数据库中的作业名称相同,必须由集群的其他成员更新

您可以尝试重命名作业(jobkey),或者检查数据库是否未被其他人使用


不过,作业会在启动时更新其配置。

我确实有相同的问题,但原因不同,这就是为什么要发布此消息的原因。我已经用定制的表定制了QUARTZ模式。例如,JOB_DETAILS、TRIGGERS和CRON_触发器是实际的表。我为每个表创建了前缀为QRTZ_uu的表

在启动应用程序时,作业正在注册,触发器正在注册,记录将按预期显示在表中。但是,作业触发不会在下一个CRON时间间隔内发生。那么,我犯的错误是什么


作业详细信息和触发器之间有关系,触发器与CRON\u触发器等有关系。我没有指定这些表之间的外键关系。

我确实有相同的问题,但原因不同,这就是发布此消息的原因。我已经用定制的表定制了QUARTZ模式。例如,JOB_DETAILS、TRIGGERS和CRON_触发器是实际的表。我为每个表创建了前缀为QRTZ_uu的表

在启动应用程序时,作业正在注册,触发器正在注册,记录将按预期显示在表中。但是,作业触发不会在下一个CRON时间间隔内发生。那么,我犯的错误是什么


作业详细信息和触发器之间有关系,触发器与CRON\u触发器等有关系。我没有指定这些表之间的外键关系。

No@AdilOoze,quartz scheduler的格式不同-啊,谢谢你纠正我,我不知道。No@AdilOoze,石英调度器的格式不同-啊,谢谢你纠正我,我不知道这一点。@user85421同样的问题仍然存在。看起来重置旧的触发器信息可能有问题。我的错,代码没有问题。我在DB中有另一个类似名称的触发器。每十分钟触发一次。@user85421同样的问题仍然存在。看起来重置旧的触发器信息可能有问题。我的错,代码没有问题。我在DB中有另一个类似名称的触发器。每十分钟发射一次。