Quartz如何处理失火?

时间:2019-04-24 10:16:52

标签: spring-boot quartz-scheduler

我的Spring Boot应用程序中有调度程序(Quartz)。它使用我的spring应用程序中定义的数据源。我正在使用MISFIRE_INSTRUCTION_FIRE_NOW。我知道调度程序启动时会触发。 现在在我的工作中,我正在做两件事。

  1. 使用spring batch将数据存储在我的数据库中
  2. 然后获取相同的数据,然后向他们发送电子邮件

我想知道,假设服务器是否停止/调度程序不起作用,即在执行作业 时发生故障转移。调度程序是重新启动整个事情还是从停止的地方开始?

因为如果作业持续失败,将会一次又一次地发送电子邮件。

  

触发

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();

0 个答案:

没有答案