提问者:小点点

Grails石英插件并发不工作


我很难让Grails中的Quartz工作按预期同时运行。这就是我的工作。我已经注释掉了使用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的原因,但它不起作用。

我有Quartz插件的0.4.2版和Grails 1.3.7版。我做错什么了吗?这似乎是一个非常简单的功能。我并不反对使用Executor插件,但似乎我不应该这么做。

我不确定这是否重要,但在本例中,我从config加载的cronExpression意味着每分钟都要执行这个作业:“0****?”


共1个答案

匿名用户

显然,有一个隐藏的配置,我不知道这是阻止工作。在我的conf文件夹中有一个名为quartz的文件。包含以下属性的属性:

org.quartz.threadPool.thread计数=1

在增加这个数字后,我的作业甚至在尚未完成上一次执行时也会触发。