【问题标题】:Grails - Can Jobs be disabled using config.groovyGrails - 可以使用 config.groovy 禁用作业
【发布时间】:2012-01-06 17:35:50
【问题描述】:

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

【问题讨论】:

    标签: grails jobs config


    【解决方案1】:

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

    quartz {
        autoStartup = false
    }
    

    【讨论】:

      【解决方案2】:

      以下内容会有效地禁用每个作业(尽管这与完全禁用 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 类中重复上面的代码,要么放入抽象基类中(或使用元编程来实现相同的结果而无需继承)。

      【讨论】:

        【解决方案3】:

        由于触发器被定义为作业中的静态成员,您可以在 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 = {}
        

        【讨论】:

        • 感谢您的帮助。这比为每个要检查的作业引入一个新变量要好得多。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        • 2012-08-12
        相关资源
        最近更新 更多