У меня есть работа, которую нужно запускать каждую 1 минуту. Я решил перейти от аннотации Spring @Scheduled к заданиям Quartz, чтобы использовать ее кластерный режим во время сине-зеленого развертывания. Для этого я использовал конфигурацию, подобную этой:
@Bean
public JobDetailFactoryBean fooJob() {
JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
factoryBean.setJobClass(FooJob.class);
factoryBean.setName(JOB_IDENTITY);
factoryBean.setGroup(FooJob.class.getName());
factoryBean.setDurability(true);
return factoryBean;
}
@Bean
public SimpleTriggerFactoryBean fooTrigger(@Qualifier("fooJob") JobDetail jobDetail) {
SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean();
factoryBean.setName(JOB_IDENTITY);
factoryBean.setGroup(FooJob.class.getName());
factoryBean.setJobDetail(jobDetail);
factoryBean.setStartDelay(0L);
factoryBean.setRepeatInterval(INTERVAL_SECONDS * 1000);
factoryBean.setMisfireInstruction(Trigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY);
return factoryBean;
}
Также у меня настроено хранилище заданий postgres. В этом нет ничего плохого - все работает как положено.
Теперь мой вопрос: что, если в будущем мне больше не нужно будет выполнять эту работу? Затем я удаляю эту конфигурацию, но задание и триггер все еще сохраняются в хранилище заданий, и задание запускается, даже если конфигурация удалена. Я ожидаю, что когда я разверну код без бинов сверху, задание будет удалено из хранилища. Это как-то возможно?