【发布时间】:2012-10-16 20:20:14
【问题描述】:
我无法让我在 Grails 中的 Quartz Job 按预期同时运行。这是我的工作的样子。我已经注释掉了使用 Executor 插件的行,但是当我不注释掉它们时,我的代码会按预期工作。
import java.util.concurrent.Callable
import org.codehaus.groovy.grails.commons.ConfigurationHolder
class PollerJob {
def concurrent = true
def myService1
def myService2
//def executorService
static triggers = {
cron name: 'pollerTrigger', startDelay:0, cronExpression: ConfigurationHolder.config.poller.cronExpression
}
def execute() {
def config = ConfigurationHolder.config
//Session session = null;
if (config.runPoller == true) {
//def result = executorService.submit({
myService1.doStuff()
myService2.doOtherStuff()
//} as Callable)
}
}
}
在我的情况下,myService2.doOtherStuff() 需要很长时间才能完成,这与下次触发此作业时重叠。我不介意它们是否重叠,这就是我明确添加 def concurrent = true 但它不起作用的原因。
我有 0.4.2 版的 Quartz 插件和 Grails 1.3.7。我在这里做错了吗?似乎是一个非常简单易用的功能。我不反对使用 Executor 插件,但似乎我不应该这样做。
我不确定这是否重要,但在这种情况下,我从配置加载的 cronExpression 意味着每分钟执行一次该作业:“0 * * * * ?”
【问题讨论】: