gpt4 book ai didi

grails - 通过Grails 1.3.7中的 quartz 插件0.4.2停止cron作业

转载 作者:行者123 更新时间:2023-12-02 15:58:39 28 4
gpt4 key购买 nike

我有grails 1.3.7和 quartz 插件0.4.2用于cron作业。

class MyJob {
static triggers = {}

void execute() {
//some doings.
}
}

在代码的某个地方,我可以像这样动态调度工作:
MyJob.schedule(cronExpression)

每次我计划新的cron作业时,它都会创建一个新的作业,并且它会与以前创建的作业一起使用。但是我想用新工作替换MyJob的旧cron工作。
也许我的理解是错误的,但我尝试添加
def concurrent = false

它没有帮助。
有什么办法可以停止某个职位类别的所有工作?
谢谢!

UPD:据我了解,此版本的 quartz 插件中没有诸如InterruptableJob之类的东西。我对吗?

最佳答案

最后,我找到了一种方法,可以取消计划工作并安排另一个工作。
首先,我添加了一个工作组:

class MyJob {
def group = 'jobGroupName'

static triggers = {}

void execute() {
// some stuff
}
}

我也发现插件内部的JobManagerService具有非常有用的方法。但是我一直在研究源代码,以了解它如何正常工作。一段时间后,我的解决方案出现在下一个代码中(也许还很原始,但是可以用):
class MyService {

def jobManagerService

def rescheduleJob() {
def job = jobManagerService.getJob('jobGroupName').first()
Scheduler scheduler = jobManagerService.quartzScheduler
Trigger trigger = scheduler.getTriggersOfJob(job, 'jobGroupName').first()

if (!jobManagerService.unscheduleJob(trigger.group, trigger.name)) {
log.warn('Failed during unscheduling job')
} else {
MyJob.schedule(newCronExpression)
}
}
}

有时不清楚服务方法中需要哪个名称和组。因此调试和源代码帮助了我。

关于grails - 通过Grails 1.3.7中的 quartz 插件0.4.2停止cron作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32656003/

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