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