Как использовать объект org.quartz.Scheduler в классе обслуживания - PullRequest
0 голосов
/ 26 февраля 2019

Я создал приложение весенней загрузки, в котором основной класс я создаю объект планировщика.

prop.put("quartz.scheduler.instanceName", "ServerScheduler");
        prop.put("org.quartz.scheduler.instanceId", "AUTO");
        prop.put("org.quartz.scheduler.skipUpdateCheck", "true");
        prop.put("org.quartz.scheduler.instanceId", "CLUSTERED");
        prop.put("org.quartz.scheduler.jobFactory.class", "org.quartz.simpl.SimpleJobFactory");
        prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX");
        prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.StdJDBCDelegate");
        prop.put("org.quartz.jobStore.dataSource", "quartzDataSource");
        prop.put("org.quartz.jobStore.tablePrefix", "H1585.QRTZ_");
        prop.put("org.quartz.jobStore.isClustered", "false");
        prop.put("org.quartz.scheduler.misfirePolicy", "doNothing");

        prop.put("org.quartz.dataSource.quartzDataSource.driver", "com.ibm.db2.jcc.DB2Driver");
        prop.put("org.quartz.dataSource.quartzDataSource.URL", url);
        prop.put("org.quartz.dataSource.quartzDataSource.user", user);
        prop.put("org.quartz.dataSource.quartzDataSource.password", passwrd);
        prop.put("org.quartz.dataSource.quartzDataSource.maxConnections", "2");

        SpringApplication.run(SchedulerApplication.class, args);

        try {

            SchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(prop);
            Scheduler scheduler = stdSchedulerFactory.getScheduler();
            scheduler.start();

Я хочу использовать один и тот же объект планировщика в своем классе обслуживания для запуска задания.Тот, который я получаю, используя приведенный ниже код, не работает, показывая другой идентификатор экземпляра.

scheduler = StdSchedulerFactory.getDefaultScheduler();

Подскажите пожалуйста, как решить.Заранее спасибо!

1 Ответ

0 голосов
/ 26 февраля 2019

вы можете создать синглтон Scheduler, и автоматически подключить в вашем классе обслуживания

@SpringBootApplication
public class SchedulerApplication {

    public static void main(final String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    @Bean
    public Scheduler scheduler() {
        //create props as you above code
        SchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(prop);
        Scheduler scheduler = stdSchedulerFactory.getScheduler();
        scheduler.start();
        return scheduler;
    }
}

, затем вы можете использовать в своем классе обслуживания

@Service
public class YourServiceClass {
    @Autowired
    private Scheduler scheduler;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...