Рекомендации по cron-подобному планированию в Grails: метод запуска раз в час - PullRequest
4 голосов
/ 14 апреля 2010

Предположим, я хочу запустить следующий метод foo() один раз в час в Grails:

class FooController {
  public static void foo() {
    // stuff that needs to be done once every hour (at *:00)
  }
}

Какой самый простой / рекомендуемый способ настроить такое расписание, подобное cron, в Grails?

Ответы [ 2 ]

11 голосов
/ 14 апреля 2010

Кварцевый плагин: http://grails.org/plugin/quartz

Добавляет функции планирования заданий Quartz ...

Начиная с версии 1.0-RC3, этот плагин использует Quartz 2.1.x и больше не использует Quartz 1.8.x. Если вы хотите использовать Terracotta 3.6+, это плагин для использования. Это потому, что другой плагин 'quartz2' не использует класс JobDetailsImpl, который требуется для Terracotta 3.6. Подробнее см. https://jira.terracotta.org/jira/browse/QTZ-310 ...

Полная документация может быть найдена здесь

3 голосов
/ 20 апреля 2010

Если вы не хотите добавлять другую зависимость от плагина, альтернативой является использование класса JDK Timer. Просто добавьте следующее к Bootstrap.groovy

def init = { servletContext ->
    // The code for the task should go inside this closure
    def task = { println "executing task"} as TimerTask

    // Figure out when task should execute first
    def firstExecution = Calendar.instance

    def hour = firstExecution.get(Calendar.HOUR_OF_DAY)
    firstExecution.clearTime()
    firstExecution.set(Calendar.HOUR_OF_DAY, hour + 1)

    // Calculate interval between executions
    def oneHourInMs = 1000 * 60 * 60

    // Schedule the task
    new Timer().scheduleAtFixedRate(task, firstExecution.time, oneHourInMs) 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...