GrailsのQuartzJobを期待どおりに同時に実行するのに問題があります。これが私の仕事の様子です。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()の完了には非常に長い時間がかかり、次にこのジョブがトリガーされるときに重複します。それらが重複してもかまいません。そのため、明示的にdefcurrent = trueを追加しましたが、機能していません。
Quartzプラグインのバージョン0.4.2とGrails1.3.7があります。私はここで何か間違ったことをしていますか?使用するのはかなり簡単な機能のようです。私はExecutorプラグインの使用に反対していませんが、そうする必要はないようです。
重要かどうかはわかりませんが、この場合configからロードしているcronExpressionは、このジョブを毎分実行することを目的としています: "0 * * * *?"