Java 为什么我的石英作业没有根据给定的cron表达式触发,而是每10分钟触发一次?
我正在尝试创建一个作业,它将在每个星期六晚上8点运行,使用cron表达式输入到触发器调度器。但我的工作每10分钟就被执行一次?我到底做错了什么,请帮帮我。我的应用程序设置堆栈是Spring Boot+Hibernate。代码如下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
@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中有另一个类似名称的触发器。每十分钟发射一次。