Я работаю со сценарием, где у нас есть одна база данных с несколькими схемами, одна схема для каждого клиента. Это позволяет каждому клиенту устанавливать различные графики для своих работ. Все схемы имеют одинаковый набор заданий, отличаются только расписания.
Мне нужно написать одно приложение Spring-Boot для запуска всех заданий из всех схем.
Похоже, что это можно сделать, определив разные свойства quartz.properties для каждой схемы, а затем настроив разные планировщики для каждой из них, например:
@SpringBootApplication
@Configuration
public class MyApplication{
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public Scheduler schedulerA(Trigger trigger, JobDetail job) {
StdSchedulerFactory factory = new StdSchedulerFactory();
factory.initialize(new ClassPathResource("quartzA.properties").getInputStream());
Scheduler scheduler = factory.getScheduler();
scheduler.setJobFactory(springBeanJobFactory());
scheduler.scheduleJob(job, trigger);
scheduler.start();
return scheduler;
}
@Bean
public Scheduler schedulerB(Trigger trigger, JobDetail job) {
StdSchedulerFactory factory = new StdSchedulerFactory();
factory.initialize(new ClassPathResource("quartzB.properties").getInputStream());
Scheduler scheduler = factory.getScheduler();
scheduler.setJobFactory(springBeanJobFactory());
scheduler.scheduleJob(job, trigger);
scheduler.start();
return scheduler;
}
}
Мой вопрос: это правильно? Могу ли я просто определить эти планировщики в моем классе SpringBootApplication, аннотированном @Configuration, и ожидать, что он будет работать (при условии, что свойства правильные)? Я что-то упустил?