在 Heroku 上,并使用 Play Framework,是否有必要设置后台作业处理器(使用 Akka/RabbitMQ/等)以执行繁重的任务*?
我知道 Play 提供了在请求中异步执行任务的能力,但这是否足以避免需要后台作业处理器?在非 Heroku 部署的独立 Play 应用程序上,异步功能可以在一个进程中完成所有操作,但在 Heroku 应用程序上,这似乎还不够:根据《Professional Heroku Programming 》一书,(第 254 页,在使用 Ruby 开发部分中),Web dyno 在收到请求和传递响应之间被阻塞,并且在此期间所有其他请求都排队。
如果需要后台作业处理器,是否有任何示例?我见过 Play 和 Akka、Play 和 Heroku 的例子,但不是所有三个都在一起。
*(对于繁重的任务,我通常是指需要回答的可能长时间运行的任务,例如复杂的数据库查询的结果或提供给最终用户的 Web 服务调用,而不是一劳永逸的事情比如发邮件)。