如何防止在Grails中并发执行作业?

csv*_*iri 14 grails quartz-scheduler

我有grails的石英作业,需要每5秒执行一次,但我需要按顺序执行.在某些情况下,作业的执行超过了这个5秒,在这种情况下,我不想在前一个执行没有完成时执行.如何在grails中配置?

(当然整个魔法可以使用静态易失性标志来完成,但这不是一种非常优雅的方式)(另外我如何配置作为单例的工作?)

谢谢

Jon*_*oth 24

假设你正在使用grails quartz插件,你应该只能将它添加到你的工作中:

class MyJob {

    static concurrent = false

    void execute() {
        println "Job run!"
    }
}
Run Code Online (Sandbox Code Playgroud)

Quartz插件文档:

"默认情况下,Job以并发方式执行,因此即使先前执行相同的Job仍在运行,也可以启动新的Job执行.如果要覆盖此行为,可以使用'concurrent'属性,在这种情况下,Quartz的StatefulJob将是用过的"