当前位置: 首页 > 知识库问答 >
问题:

在quartz插件中使用grails数据源

咸弘雅
2023-03-14

我希望创建使用JdbcStore的quartz作业,如Burt的示例中文档的集群部分所述。

该示例演示如何使用quartz.Properties文件配置quartz。

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

那么,假设我在数据库中手动创建了所需的表,那么是否可以使用dataSource.groovy中配置的默认数据源和quartz插件呢?

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个答案

苍德寿
2023-03-14

我设法调整了QuartzConfig.groovy中的所有设置。为了使它工作,我必须删除的唯一东西是数据库特定的选项。

此外,我必须添加属性scheduler.idlewaittime=1000,如第12页http://www.quartz-scheduler.org/generated/2.2.1/pdf/quartz_scheduler_configuration_guide.pdf,因为尽管我的作业被调用为myjob.triggernow(paramsMap),但在实际开始之前有20到30秒的延迟。

如果scheduler.idleWaittime设置为1 second,作业在提交后1秒钟就会触发。

下面是我的最后一个配置,作为一个示例:

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表,该脚本位于/path/to/your/project/target/work/plugins/quartz-1.0.2/src/templates/sql/······

 类似资料:
  • 我需要在Grails Quartz插件作业的执行之间保持一个计数器值。它以正确的时间间隔运行,我可以设置jobDataMap并正确地读回值(在相同的执行运行期间),但它拒绝在执行之间记住它。 我按照文档的建议设置了。有什么想法吗?我只需要坚持并递增一个计数器。如果可能的话,我想避免使用数据库,我想这应该只是使用内存?或者有其他工作?

  • 我正在从事一个利用quartz插件的grails项目。插件按预期工作,在开发模式下本地运行项目时不会出现问题。然而,在tomcat的独立实例中运行该项目时,我遇到了以下错误。 以下是我在BuildConfig中的内容。棒极了 任何关于如何补救的想法或方向都将不胜感激。事先感谢您的帮助。

  • 我目前正在尝试使用Gradle构建一个Grails项目,以轻松集成一些存储库。我已经创建了一个新的目录,并从该目录我已经创建了以下build.gradle文件从这个网站的指示: http://grails.github.io/grails-gradle-plugin/docs/manual/guide/introduction.html 当我尝试使用构建时,我遇到了以下错误: 失败:构建失败,有一

  • 非常感谢你的帮助。:)

  • 我想将视图渲染为pdf,并尝试使用Grails渲染插件2.0.3 我尝试了最简单的gsp-file开始: 在控制器中: 最后是: 我错过了什么?或者它不应该与这个版本的grails(3.2.4)一起使用? 也许有更好的插件可以使用?

  • 问题内容: 我正在使用Grails 1.1 beta2。我需要将大量数据导入Grails应用程序。如果我反复实例化grails域类然后保存它,则性能会降低到无法接受的程度。以从电话簿导入人为例: 事实证明这是缓慢的。Grails邮件列表上的某人建议在事务中分批保存。所以现在我有: 这必须至少在开始时更快。每笔交易会保存500条记录。随着时间的流逝,交易花费的时间越来越长。最初的几笔交易大约需要5秒