gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:21:39 24 4
gpt4 key购买 nike

我在 grails 中有一个 quartz 作业,需要每 5 秒执行一次,但我需要按顺序执行。在某些情况下,作业的执行时间超过了这 5 秒,在这种情况下,我不想在上一个执行未完成的情况下执行。如何在 grails 中配置它?

(当然,整个魔术可以用一个静态的 volatile 标志来完成,但这不是一个非常优雅的方法)
(另外,我如何将作业配置为单例?)

谢谢

最佳答案

假设您正在使用 grails quartz 插件,您应该能够设置 concurrent您的工作类别的属性为 false .

来自 Quartz Plugin Documentation :

"By default Jobs are executed in concurrent fashion, so new Job execution can start even if previous execution of the same Job is still running. If you want to override this behavior you can use 'concurrent' property, in this case Quartz's StatefulJob will be used"



在最新版本的 quartz 插件(Grails 3.3.* 的 2.0.13 版)中,它看起来像这样:
class MyJob {

static concurrent = false

void execute() {
println "Job run!"
}
}

对于旧版本的 grails/quartz,它看起来很相似,除了属性设置为 def而不是 static :
class MyJob {

def concurrent = false

void execute() {
println "Job run!"
}
}

关于grails - 如何防止在 Grails 中并发执行作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6453802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com