【发布时间】:2023-03-26 10:50:01
【问题描述】:
在 Heroku 上并使用 Play Framework,是否需要设置后台作业处理器(使用 Akka/RabbitMQ/等)才能执行繁重的任务*?
我知道 Play 提供了在请求中异步执行任务的能力,但这是否足以避免需要后台作业处理器?在非 Heroku 部署的独立 Play 应用程序上,异步功能可以在一个进程中完成所有操作,但在 Heroku 应用程序上,这似乎还不够:根据书 Professional Heroku Programming,(第 254 页,在使用 Ruby 开发部分中),Web dyno 在收到请求和传递响应之间被阻塞,并且在此期间所有其他请求都排队。
如果需要后台作业处理器,是否有任何示例?我见过 Play 和 Akka、Play 和 Heroku 的例子,但不是所有三个都在一起。
*(对于繁重的任务,我通常是指需要回答的可能长时间运行的任务,例如复杂数据库查询的结果或提供给最终用户的 Web 服务调用,而不是触发和-忘记发送电子邮件之类的事情。
【问题讨论】:
-
在当前运行 Play 应用程序的 Cedar (*.herokuapp.com) 堆栈上,simultaneous connections are supported。您提到的网络测功机阻止仅在较旧的 Bamboo 堆栈上。
标签: scala heroku playframework-2.0 rabbitmq akka