2015-01-30 3 views
2

Я хочу создать задания кварца, которые используют JdbcStore, как описано в разделе кластеризации docs, в примере Берт.Использование источников данных grails в плагине кварца

В примере показано, как настроить кварц, используя файл quartz.properties.

Теперь я хочу, чтобы мой магазин jdbc был той же базой данных, что и мое приложение grails, так что у меня меньше настроек для дублирования.

Итак, если я вручную создаю необходимые таблицы в своей базе данных, можно ли использовать источник данных по умолчанию, настроенный в Datasource.groovy с плагином для кварца?

Я использую грабли 2.4.4 и кварц 1.0.2.

В других терминах я могу добавить свои настройки в QuartzConfig.groovy, а не создавать новый файл quartz.properties? По крайней мере, я мог бы воспользоваться отдельными настройками среды.

Возможно, что-то подобное в QuartzConfig.groovy?

quartz { 
autoStartup = true 
jdbcStore = true 
waitForJobsToCompleteOnShutdown = true 
exposeSchedulerInRepository = true 

props { 
    scheduler.skipUpdateCheck = true 

    threadPool.class = 'org.quartz.simpl.SimpleThreadPool' 
    threadPool.threadCount = 50 
    threadPool.threadPriority = 9 

    jobStore.misfireThreshold = 60000 

    jobStore.class = 'impl.jdbcjobstore.JobStoreTX' 
    jobStore.driverDelegateClass = 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate' 

    jobStore.useProperties = false 
    jobStore.tablePrefix = 'QRTZ_' 
    jobStore.isClustered = true 
    jobStore.clusterCheckinInterval = 5000 

    plugin.shutdownhook.class = 'org.quartz.plugins.management.ShutdownHookPlugin' 
    plugin.shutdownhook.cleanShutdown = true 

    jobStore.dataSource = 'myDS' 
    // [...] 
} 
+0

Я мог ошибаться, но, глядя на источник для 1.3.SNAPSHOT, появляется, если вы полностью оставите это вне своей конфигурации, он по умолчанию будет ваши приложения 'dataSource'. См. Https://github.com/grails-plugins/grails-quartz/blob/master/QuartzGrailsPlugin.groovy#L131. Вы можете рассмотреть возможность обновления до этой версии. –

+0

Мне все еще нужно создавать таблицы базы данных вручную, не так ли? – Philippe

+0

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

ответ

6

Мне удалось настроить все мои настройки в QuartzConfig.groovy. Единственное, что мне пришлось удалить, чтобы заставить его работать, были конкретные параметры базы данных.

Кроме того, я должен был добавить свойство scheduler.idleWaitTime = 1000, как советовали здесь http://www.quartz-scheduler.org/generated/2.2.1/pdf/Quartz_Scheduler_Configuration_Guide.pdf на странице 12, потому что, несмотря на мою работу называют в качестве MyJob.triggerNow(paramsMap), была задержка 20 до 30 секунд, прежде чем он на самом деле началось.

С scheduler.idleWaitTime установлен на 1 секунду, работа действительно срабатывает через 1 секунду после ее отправки.

QuartzProperties.groovy фактически принимает все свойства, описанные в документах конфигурации кварца (например: http://quartz-scheduler.org/documentation/quartz-2.1.x/configuration/ConfigJobStoreTX). Просто поместите их в блок props {...} и удалите префикс org.quartz.

Вот мой окончательный конфигурации, в качестве примера:

quartz { 
    autoStartup = true 
    jdbcStore = true 
    waitForJobsToCompleteOnShutdown = true 

    // Allows monitoring in Java Melody (if you have the java melody plugin installed in your grails app) 
    exposeSchedulerInRepository = true 

    props { 
     scheduler.skipUpdateCheck = true 
     scheduler.instanceName = 'my_reporting_quartz' 
     scheduler.instanceId = 'AUTO' 
     scheduler.idleWaitTime = 1000 

     threadPool.'class' = 'org.quartz.simpl.SimpleThreadPool' 
     threadPool.threadCount = 10 
     threadPool.threadPriority = 7 

     jobStore.misfireThreshold = 60000 

     jobStore.'class' = 'org.quartz.impl.jdbcjobstore.JobStoreTX' 
     jobStore.driverDelegateClass = 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate' 

     jobStore.useProperties = false 
     jobStore.tablePrefix = 'QRTZ_' 
     jobStore.isClustered = true 
     jobStore.clusterCheckinInterval = 5000 

     plugin.shutdownhook.'class' = 'org.quartz.plugins.management.ShutdownHookPlugin' 
     plugin.shutdownhook.cleanShutdown = true 

    } 
} 

Не забудьте создать SQL таблицы с соответствующим скриптом, который находится в каталоге/путь/к/ваш/проект/цель/work/plugins/quartz-1.0.2/src/templates/sql/...