Запуск кварцевых заданий от Config.groovy - PullRequest
2 голосов
/ 12 сентября 2011

В моем приложении запущено следующее задание Quartz:

class ScraperJob {
    def scraperService

    static triggers = {
        cron name: 'scraperTrigger', cronExpression: "0 0 * * * ?"  // run every minute
    }

    def execute(){
        try {
            scraperService.storing()
            log.info "${new Date()} - Scraping went smoothly."
        }
        catch(IOException) { // Connexion problem
            log.error "${new Date()} - Method: parsing >> Connexion down or interrupted while parsing !"
        }
        catch(SAXException) { // Any SAXParser exception
            log.error "${new Date()} - Method: parsing >> Parser error."
        }
        finally { // if not closed, the application crashes when the connexion fails
            scraperService.slurper.finalize()
            scraperService.parser.finalize()
        }
  }
}

Я хотел бы знать, возможно ли установить свойство triggers из файла Config.groovy. Если да, не могли бы вы объяснить, как?

Ответы [ 2 ]

5 голосов
/ 13 сентября 2011

Я понятия не имею, сработает ли это на самом деле, потому что я не уверен, когда будут настроены кварцевые задания, но теоретически это может сработать.Вы могли бы, вероятно, увидеть, как можно сделать это гораздо более динамичным, если у вас более одной работы.

Config.groovy

quartz.yourCronJobName="0 0 * * * ?"

BootStrap.groovy

import org.codehaus.groovy.grails.commons.ConfigurationHolder as ConfigHolder
...
def cronExpression = ConfigHolder.config.yourCronJobName
ScraperJob.triggers.cronExpression = cronExpression 

Удачи.Дайте мне знать, если это поможет.

3 голосов
/ 14 сентября 2011

Вот как я в итоге это сделал:

Config.groovy

scraperJob= "0 * * * * ?"

ScraperJob.groovy

import org.codehaus.groovy.grails.commons.ConfigurationHolder as ConfigHolder

class ScraperJob {

  static triggers = {
        cron cronExpression: ConfigHolder.config.scraperJob // Calling the ScraperJob set in Config.groovy
    }
  def execute(){ ... }
}
...