【问题标题】:Automatic restart of cron job using quartz in grails on server restart在服务器重新启动时使用 Grails 中的石英自动重新启动 cron 作业
【发布时间】:2013-10-31 10:10:30
【问题描述】:

我在我的 grails 项目中使用石英插件进行 cron 调度。 在我的应用程序中,用户提供了一个脚本和 cron 配置,我使用石英将其设置为 cron。

但是当我重新启动服务器时,这些 cron 作业不会启动。 我是否必须再次手动创建这些 cron 作业,或者有一种方法可以自动存储并重新启动它们。

这是我的石英作业

class RscriptJob {
    def execute() {
        println "hello"
    }
}

这是通过视图接收用户请求以设置 cron 的控制器

class UploadsController {
   def upload() {
      def cron=params.cronString
      RscriptJob.schedule(cron)
   }
}

cron 已安排。现在,当我重新启动服务器时,cron 不会启动。 我将 cron 信息存储在 db 中,并且可以使用它在启动时再次设置 cron。

但我想知道石英是否具有支持它的内置功能。

【问题讨论】:

  • 你能发布你的代码吗?

标签: grails cron quartz-scheduler


【解决方案1】:

我认为你可以从 bootstrap.groovy 触发 DailyJob,它在启动时执行,这里是安排你的工作的地方

    class BootStrap {


        def init = { servletContext ->
            def cronExpression = "*/10 * * * * ?"
            DailyJob.schedule(cronExpression)
        }
    }

【讨论】:

  • 我不能这样做,因为 crons 是由最终用户创建的。我无法在 bootstrap.groovy 中手动添加 crons
  • 好吧,我不知道您的工作领域或您的数据库如何,但您当然可以从数据库中获取所有相关数据,而不是对其进行硬编码
  • 请看代码。我相信这将帮助您理解我的问题。谢谢
猜你喜欢
  • 2020-09-16
  • 2018-06-11
  • 2020-10-22
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多