我的Spring Boot应用程序中有调度程序(Quartz)。它使用我的spring应用程序中定义的数据源。我正在使用MISFIRE_INSTRUCTION_FIRE_NOW
。我知道调度程序启动时会触发。
现在在我的工作中,我正在做两件事。
我想知道,假设服务器是否停止/调度程序不起作用,即在执行作业 时发生故障转移。调度程序是重新启动整个事情还是从停止的地方开始?
因为如果作业持续失败,将会一次又一次地发送电子邮件。
触发
public static Trigger buildJobTrigger(JobDetail jobDetail, Date scheduleDateTime) {
return TriggerBuilder.newTrigger()
.forJob(jobDetail)
.withIdentity(jobDetail.getKey().getName(), "email-triggers")
.withDescription("Send email Trigger")
.startAt(scheduleDateTime)
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withMisfireHandlingInstructionFireNow())
.build();
}
还有一种方法可以知道作业是失败还是成功,当作业发生时,我在qrtz_fired_triggers
表中看到数据,但是稍后将其删除。
有没有办法存储它?
我已经使用了storeDurably这样的东西,但是什么也没有存储。
工作
return JobBuilder.newJob(jobClass)
.withIdentity(UUID.randomUUID().toString(), "email-jobs")
.withDescription(description)
.usingJobData(jobDataMap)
.requestRecovery(true)
.storeDurably(true)
.build();