Допустим, у меня есть простой контроллер вроде этого:
class FooController {
def index = {
someVeryLongCompution() //e.g crawl a set of web pages
render "Long computation was launched."
}
}
Когда вызывается действие index, я хочу, чтобы метод немедленно возвращался пользователю при асинхронном выполнении длинных вычислений.
Я понимаю наиболее надежный способ сделать это - использовать брокер сообщений в архитектуре, но мне было интересно, есть ли более простой способ сделать это.
Я попробовал плагин Executor, но он блокирует возврат HTTP-запроса до тех пор, пока вычисление выполнено.
Я попробовал плагин Quartz, но, похоже, он подходит для периодических задач (если нет способа выполнить задание только один раз?)
Как вы, ребята, обрабатываете такие запросы в Grails?