Насколько я вас понимаю, вы получаете данные от пользователя? И вы хотите сохранить эти данные 1000 раз, каждые 5 минут один?
Итак, вы хотите вызвать службу для этого (данные в качестве параметра)?
Так что это может быть сделано через потоки (где угодно, должно также работать в контроллерах ...
Thread.start {
1000.times {
def operationLogInstance = new OperationLog(params)
println(params.validator)
operationLogInstance.validator = Validator.get(params.validator.id);
operationLogInstance.save(flush: true)
}
wait(300000)
}
Может быть, существует необходимый OperationLog.withSession {...} вокруг него.
В качестве альтернативы вы можете выполнить задание quatz (используя сервис, который сохраняет журналы, которые вы хотите сохранить ...), выглядя так:
class OperationLogJob {
static triggers = {
simple name:'Operation Save', startDelay:0, repeatInterval:300000
}
def sessionRequired = true
def concurrent = false
def operationsLogService
def execute() {
def operationLogInstance = operationsLogService.getLogsToSave()
if(operationLogInstance) {
operationLogInstance.validator = Validator.get(params.validator.id);
operationLogInstance.save(flush: true)
}
}
}
}
Метод operationsLogService.getLogsToSave () возвращает (и удаляет) значение из стека, которое можно заполнить в методе контроллера (например, 1000.times {operationsLogService.addLog (log)})