Если вам нужно больше гибкости, чем просто таймер, вы можете использовать Quartz Plugin и настроить Cron Job:
class MyTimerJob {
static triggers = {
// cron trigger for every 5 minutes
cron name: 'myCronTrigger', cronExpression: '0 */5 * * * ?'
}
def execute = {
// perform task
}
}
Чтобы начать Quartz на приложении запуска (как сказал Джаред: не на кота запуска), убедитесь, что ваш grails-app/conf/QuartzConfig.groovy
имеет следующее:
quartz {
autoStartup = true
}
autoStartup = true
по умолчанию, поэтому вам, вероятно, ничего не нужно будет менять.
Использование этого плагина избавит вас от необходимости самостоятельно обращаться с логикой таймера.
FYI, ваша проблема с изменением системного времени, вероятно, такая же, как ошибка в ссылке, которую вы указали в комментарии ниже. Я не уверен в внутренней работе Quartz, но это * возможно * использование таймеров и, следовательно, склонность к той же проблеме. Возможно, кто-то, у кого больше знаний о том, как работает Кварц, может просветить нас. –