Создание экземпляров Quartz Scheduler во время выполнения - PullRequest
1 голос
/ 24 марта 2012

Я работаю над приложением, в котором у нас есть 100 заданий, которые должны быть запланированы для выполнения. Вот мой пример файла quartz.property

org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.threadPool.threadCount=7
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL=jdbc:mysql://localhost:3306/quartz
org.quartz.dataSource.myDS.user=root
org.quartz.dataSource.myDS.password=root
org.quartz.dataSource.myDS.maxConnections=5

Хотя это работает нормально, но мы планируем разделить задания на разные группы, чтобы их было легко поддерживать. Группы будут уникальными, и мы хотим, чтобы, если пользователь (Admin) создал новую группу, новый экземпляр планировщика должен был быть создан, и все задания в этой группе были обработаны этим экземпляром планировщика в будущем. Это означает, что если администратор создаст новую группу, скажем NewProductNotification , то мы сможем создать экземпляр планировщика с тем же именем NewProductNotification и всеми заданиями, которые являются частью NewProductNotification * Группа 1009 * должна обрабатываться NewProductNotification экземпляром планировщика.

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

Как показано выше в файле proprty, мы используем jdbcjobstore для обработки всего, используя базу данных.

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Я не думаю, что динамическое создание планировщиков - это хороший подход в Quartz.Вы можете использовать одни и те же таблицы базы данных для нескольких планировщиков (сведения о задании и триггеры имеют имя планировщика как часть их первичного ключа), но Scheduler является своего рода тяжеловесом.

Можете ли вы объяснить, зачем вам нужны отдельные планировщики?Может быть, вы можете просто использовать группы заданий и группы триггеров (на самом деле вы используете термин группа ), чтобы различать задания / группы?Также вы можете использовать разные приоритеты для каждого триггера.

В качестве примечания:

Я использую JobStoreCMT и вижу тупики, что я могу сделать?

Убедитесь, что в ваших источниках данных есть как минимум число подключений потоков в пуле + 2 соединения.

И в вашей конфигурации (измените значения, и все будет в порядке):

org.quartz.threadPool.threadCount=7
org.quartz.dataSource.myDS.maxConnections=5

От: Я использую JobStoreCMT и вижу тупики, что я могу сделать?

0 голосов
/ 24 марта 2012

Динамическое создание графиков очень возможно.Вам нужно будет создать объекты JobDetail и Trigger и перейти к объекту SchedulerFactoryBean.Об остальном позаботится.

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