【问题标题】:Grails Quartz - How to conbine similar two jobs into one job?Grails Quartz - 如何将相似的两个工作组合成一个工作?
【发布时间】:2015-05-10 08:09:17
【问题描述】:

我必须相似的两个工作,并希望将这两个工作合并为一个工作。

如何将 AJob 和 BJob 合并到一个新的 Job 中?

也就是说,我想将 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
    }
}

【问题讨论】:

  • 结合是什么意思?你想做什么?你想避免什么?您需要提供更多信息,说明您要完成的工作以及在此过程中遇到的问题。
  • 我的英语不好。我将问题更改为如何将 AJob 和 BJob 合并到 NewJob 中?英语好吗?
  • 也就是说,我想将 AJob.groovy 和 BJob.groovy 重构为一个类 NewJob.groovy。
  • 他们两个在不同的时间?否则你可以在同一个执行块中执行并有 1 个作业。 stackoverflow.com/questions/24417215/… 看看这里 - 你可以适应它。试图定义两个会尝试做两次.. stackoverflow.com/questions/6362058/…
  • 作为快速响应,它们处于不同的时间。发表此评论后,我会阅读您的建议页面。

标签: grails quartz-scheduler


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多