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