我在grails项目中使用石英插件进行cron调度。我的应用程序需要定期轮询第三方API以获取正在运行的状态并将其保留以供进一步分析。作业设置为执行一次每隔5分钟使用以下代码:
class MyJob {
def concurrent = false
static triggers = {
simple name:'MyJobTrigger', repeatInterval: 300000l //executes job in every 5 mins
}
def execute() {
log.info "Execute MyJob"
//Get the list of objects which are running currently
List runningObjects = someService.findAll(progress:1)
runningObjects?.each{
//Trigger third party api to check if run is complete
String statusString = someService.getStatusOfRunningPhase()
if(statusString.equalsIgnoreCase("success")){
log.info "in success"
//update run status in db
someService.updateStatus()
//Do further processing
} else if("inprogress".equalsIgnoreCase(statusString)){
log.info "in progress : do nothing"
} else {
log.info "run failed"
//update fail status in db
someService.updateStatus()
}
}
}
}
当我使用内置Jetty在本地计算机上运行项目时,一切正常。 但是,当我在开发机器上的tomcat上部署相同的war时,作业状态将自动在db中更新。我没有看到这些多次执行的日志
还有其他人经历过这个吗?是否需要在Tomcat中设置特定设置?
以下是QuartzConfig文件的内容:
quartz {
autoStartup = true
jdbcStore = false
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
environments {
test {
quartz {
autoStartup = false
}
}
}
请帮忙。 谢谢!