Я работаю со сценарием, в котором у нас есть одна база данных с несколькими схемами, по одной схеме для каждого клиента. Это позволяет каждому клиенту устанавливать различные графики для своей работы. Все схемы имеют одинаковый набор заданий, отличаются только расписания.
Мне нужно написать одно приложение 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, и ожидать, что он будет работать (при условии, что свойства верны)? Я что-то упустил?