【发布时间】:2012-01-06 17:35:50
【问题描述】:
我想知道是否有办法使用 config.groovy 或其他方式禁用作业。我看过可以通过 config.groovy 禁用插件的帖子,但没有看到任何关于工作的信息。我希望能够禁用所有作业,或者单独禁用每个作业而无需将它们注释掉。谢谢。
【问题讨论】:
我想知道是否有办法使用 config.groovy 或其他方式禁用作业。我看过可以通过 config.groovy 禁用插件的帖子,但没有看到任何关于工作的信息。我希望能够禁用所有作业,或者单独禁用每个作业而无需将它们注释掉。谢谢。
【问题讨论】:
我假设你使用 Quartz 插件。在这种情况下,您可以通过 Config.groovy 禁用它
quartz {
autoStartup = false
}
【讨论】:
以下内容会有效地禁用每个作业(尽管这与完全禁用 Quartz 插件并不完全相同):
MyJob.diabled = true
MyOtherJob.disabled = false
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 类中重复上面的代码,要么放入抽象基类中(或使用元编程来实现相同的结果而无需继承)。
【讨论】:
由于触发器被定义为作业中的静态成员,您可以在 Config.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
}
}
MyJob.triggers = {}
【讨论】: