Выполнение определенного кварцевого задания на определенном хосте - PullRequest
0 голосов
/ 24 мая 2018

У меня есть несколько кварцевых заданий, которые я выполняю в кластерном режиме.Некоторые требуют интенсивного ввода-вывода, а некоторые - загрузки процессора.То, что я хочу сделать, это запустить задания с привязкой к ЦП на определенном хосте и запустить задание с привязкой к вводу-выводу на другом наборе хостов.Есть ли какая-либо конфигурация, в которой я могу внести в белый список набор заданий, которые могут выполняться на конкретной машине?Я не хочу создавать другой набор кварцевых столов, чтобы делать такие вещи.

Технология: Spring boot, Oracle, Quartz 2.X

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Способ, которым я это сделал, - создать другой экземпляр планировщика в зависимости от свойства, переданного в параметре запуска JVM.Я использовал интеграцию Spring Quartz, и вот пример кода для этого.Наиболее важной частью является установка автоматического запуска на false для планировщика, который не должен работать.Таким образом, я смог создать другой планировщик, но запустил только те, которые были настроены в свойствах.

 @Bean
public SchedulerFactoryBean schedulerFactory(DataSource dataSource, JobFactory jobFactory)
        throws IOException {
    SchedulerFactoryBean factory = new SchedulerFactoryBean();
    factory.setBeanName("myscheduler");
    factory.setDataSource(dataSource);
    factory.setJobFactory(jobFactory);
    factory.setQuartzProperties(getQuartzProperties());
    if (!System.getProperty(SCHEDULER_NAME).contains("myscheduler")) {
        factory.setAutoStartup(false);
    }
    return factory;
}
0 голосов
/ 24 мая 2018

Я предлагаю в Jobstore, просто использовать pauseJob или pauseJobGroup для каждого задания для этих конкретных машин.

Или вы также можете использовать pause через SQL

Или через настройки среды, у вас естьпереключитесь туда на то, какие рабочие места вы хотите отключить.

...