Grails Quartz - 如何将类似的两份工作合并为一份工作?

时间:2015-05-09 10:24:17

标签: grails quartz-scheduler

我必须完成类似的两项工作,并希望将这两份工作合并为一份工作。

如何将AJob和BJob合并成一份新工作?

换句话说,我想将AJob.groovy和BJob.groovy重构成一个类NewJob.groovy。

AJob.groovy

class AJob {
    def testService
    static triggers = {
      cron name: 'myTrigger', cronExpression: "0 0 6 * * ?"
    }
    def group = "MyGroup"
    def description = "A job with hello"
    def execute() {
        testService.hello("hello")
    }
}

BJob.groovy

class BJob {
    def testService
    static triggers = {
      cron name: 'myTrigger', cronExpression: "0 0 7 * * ?"
    }
    def group = "MyGroup"
    def description = "B job with goodbye"
    def execute() {
        testService.hello("goodbye")
    }
}

TestService.groovy

class TwitterService {
    def hello(message){
        print message
    }
}

1 个答案:

答案 0 :(得分:1)

我认为这样做的唯一原因(与Cron同时调用)将以某种方式同步它们,以保证A在B之后被调用。最明显的解决方案是上面提到的:

class NewJob{
    def execute() {
        testService.hello("hello")
        testService.hello("goodbye")
    }
}

如果由于某种原因这些是异步调用(并且您仍然想要同步),则必须在线程上使用回调或创建单独的线程并以某种方式注入依赖项。不这样做的唯一原因是,如果你以某种方式需要记录石英作业的相关注入。更多细节?