Запуск определенного кварцевого задания на определенном хосте

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

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

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


person User5817351    schedule 24.05.2018    source источник
comment
можете ли вы посмотреть решение здесь stackoverflow.com/questions/41470884/ посмотрите в разделе комментариев о двух разных планировщиках, IOScheduler, CPUScheduler ...   -  person Srinivas    schedule 31.05.2018
comment
Спасибо, ссылка выше выглядит многообещающей. Будет ли это работать в кластерной среде, где все задания используют одну и ту же таблицу?   -  person User5817351    schedule 31.05.2018


Ответы (2)


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

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

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

person Truth    schedule 24.05.2018
comment
Не могли бы вы поделиться информацией о паузе с помощью SQL и паузе с помощью настроек среды. - person User5817351; 24.05.2018

Я сделал это так, чтобы создать другой экземпляр планировщика в зависимости от свойства, переданного в параметре запуска JVM. Я использовал интеграцию кварца Spring, и вот пример кода для этого. Самая важная часть - установка автоматического запуска на 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;
}
person User5817351    schedule 14.06.2018