Grails - 可以使用config.groovy禁用作业

时间:2011-11-26 02:35:14

标签: grails jobs config

我想知道是否有办法使用config.groovy或其他方法禁用作业。我看过你可以通过config.groovy禁用插件的帖子,但是没有看到任何关于工作的信息。我希望能够禁用所有作业,或者单独禁用每个作业而不必将其注释掉。谢谢。

3 个答案:

答案 0 :(得分:7)

由于触发器被定义为作业中的静态成员,您可以在Config.groovy中覆盖这些成员。因此,您还可以删除配置中特定作业的触发器,从而禁用它:

MyJob.groovy

class MyJob {

  static triggers = {
    simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000  
  }    

  def execute() { 
    // Job code goes here
    // This method won't get called using the configuration below
  }
}

Config.groovy中

MyJob.triggers = {}

答案 1 :(得分:2)

我假设您使用Quartz插件。在这种情况下,您可以通过Config.groovy

禁用它
quartz {
    autoStartup = false
}

答案 2 :(得分:1)

以下内容会有效地禁用每个作业(尽管这与完全禁用Quartz插件并不完全相同):

Config.groovy中

MyJob.diabled = true
MyOtherJob.disabled = false

MyJob.groovy

class MyJob {

  def grailsApplication

  static triggers = {
    simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000  
  }    

  def execute() { 
    String className = getClass().simpleName

    if (grailsApplication.config."$className".disabled) {
      return
    }
    // Job code goes here
  }
}

为了避免在每个Job类中重复上面的代码,要么将其放入抽象基类中(或者使用元编程来实现相同的结果而不继承)。