Grails cron作业在tomcat中执行多次

时间:2015-12-26 08:47:48

标签: tomcat grails cron quartz-scheduler

我在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
        }
    }
}

请帮忙。 谢谢!

0 个答案:

没有答案