Где разместить повторяющееся задание в приложении Grails? - PullRequest
4 голосов
/ 10 февраля 2011

Я изучаю grails, и я хотел бы включить повторяющуюся задачу, которая запускается каждые пять секунд во время работы моего приложения и должна иметь доступ к моим объектам домена и тому подобное.Как правильно сделать это в Grails?

Я подумал о запуске Таймера в BootStrap.groovy, но это уничтожило бы таймер.

Ответы [ 2 ]

9 голосов
/ 10 февраля 2011

Я никогда не использовал его, но плагин Grails Quartz должен позволять вам делать то, что вы хотите.

2 голосов
/ 29 апреля 2013

Кварц (http://grails.org/plugin/quartz) позволяет вам определять повторяющиеся задачи практически так же, как задача CRON будет выполняться на одном сервере.

Вы можете установить ее в своем проекте следующим образом:

grails install-plugin quartz

После установки вы можете создать новое задание с помощью:

grails create-job

Затем вы можете запланировать его следующим образом:

class MyJob {
  static triggers = {
    simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000  
  }
  def group = "MyGroup"
  def execute(){
    print "Job run!"
  }
}

Если вы предпочитаете CRONформатирование, вы можете запланировать свой триггер, используя аналогичный формат:

  static triggers = {
    cron name: 'myTrigger', cronExpression: "0 0 6 * * ?"
  }

Однако, поскольку приложение grails может быть развернуто на нескольких серверах (QA, staging, deploy, балансировщик нагрузки ...), кварцевый плагин позволяетконкретный процесс запускается независимо от того, на каком сервере он развернут.

Одна вещь, на которую нужно обратить внимание, - это то, что часы сервера синхронизированы - в противном случае вы можете столкнуться с некоторыми странными функциями (особенно если несколько серверов используют один и тот же сервер)базы данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...