在quartz插件中使用grails数据源

时间:2015-01-30 23:05:21

标签: grails quartz-scheduler grails-plugin

我想在Burt的例子中创建使用JdbcStore的石英作业,如docs的聚类部分所述。

该示例显示了如何使用quartz.properties文件配置quartz。

现在,我希望我的jdbc商店与我的grails应用程序是同一个数据库,这样我就可以复制更少的设置了。

因此,假设我在数据库中手动创建了所需的表,是否可以使用石英插件在Datasource.groovy中配置的默认dataSource?

我使用的是grails 2.4.4和quartz 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'
    // [...]
}

1 个答案:

答案 0 :(得分:7)

我设法在QuartzConfig.groovy中调整了所有设置。我必须删除才能使其工作的是数据库特定的选项。

另外,我必须在第12页添加scheduler.idleWaitTime = 1000这里建议的属性MyJob.triggerNow(paramsMap),因为尽管我的工作被称为scheduler.idleWaitTime,但之前有20到30秒的延迟它确实开始了。

props {...}设置为1秒后,作业确实在提交后触发1秒。

QuartzProperties.groovy实际上接受了石英配置文档中描述的所有属性(例如:http://www.quartz-scheduler.org/generated/2.2.1/pdf/Quartz_Scheduler_Configuration_Guide.pdf)。只需将它们放在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 } } 前缀。

这是我的最终配置,例如:

{{1}}

不要忘记使用相应的脚本创建sql表,该脚本位于/path/to/your/project/target/work/plugins/quartz-1.0.2/src/templates/sql/ ..