Кварцевый планировщик, только определенные серверы - PullRequest
0 голосов
/ 06 июня 2018

У нас есть настроенный пружиной кластерный кварцевый планировщик, который работает на всех наших серверах.Некоторые из этих серверов являются серверами приложений, а некоторые отведены для выполнения фоновых задач, в основном для извлечения заданий из ActiveMQ

. Проблема в том, что в коде есть несколько мест, в которые мы вводим Scheduler для планирования вручнуюрабочие места во время выполнения.Через очередь сообщений мы можем убедиться, что единственными классами, выполняющими ручное внедрение, являются серверы фоновых заданий.

Все серверы работают с одинаковой кодовой базой

Как настроить Quartz так, чтобы он запускал планировщик только на фоновых серверах, но при этом гарантировал, что все @Autowire из Scheduler по-прежнемууспешно

Настройка через

<bean id="quartzConfig" class="com.company.quartz.QuartzConfig"/>

и

@Bean
public JobFactory autowireCapableSpringBeanJobFactory() {
    AutowireCapableSpringBeanJobFactory jobFactory = new AutowireCapableSpringBeanJobFactory();
    jobFactory.setIgnoredUnknownProperties("applicationContext");
    return jobFactory;
}

@Bean
public SchedulerFactoryBean quartzScheduler(@Qualifier("nonXADataSource") DataSource nonXADataSource, PlatformTransactionManager transactionManager,
                ResourceLoader resourceLoader) {
    SchedulerFactoryBean scheduler = new SchedulerFactoryBean();
    scheduler.setConfigLocation(resourceLoader.getResource("classpath:quartz.properties"));
    scheduler.setSchedulerName("quartzScheduler");
    scheduler.setApplicationContextSchedulerContextKey("applicationContext");
    scheduler.setNonTransactionalDataSource(nonXADataSource);
    scheduler.setTransactionManager(transactionManager);
    scheduler.setJobFactory(autowireCapableSpringBeanJobFactory());
    scheduler.setOverwriteExistingJobs(overwriteExistingJobs);
    scheduler.setAutoStartup(autoStartup);
    scheduler.setWaitForJobsToCompleteOnShutdown(waitForJobsToCompleteOnShutdown);


    // add a bunch of triggers

    return scheduler;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...