【发布时间】:2017-02-05 11:39:07
【问题描述】:
我目前使用的是 Play 2.4.2,并已使用以下方法成功创建了线程池:
package threads
import scala.concurrent.ExecutionContext
import play.api.libs.concurrent.Akka
import play.api.Play.current
object Contexts {
implicit val db: ExecutionContext = Akka.system.dispatchers.lookup("contexts.db-context")
implicit val pdf: ExecutionContext = Akka.system.dispatchers.lookup("contexts.pdf-context")
implicit val email: ExecutionContext = Akka.system.dispatchers.lookup("contexts.email-context")
}
然后在代码中...
Future{....}(threads.Contexts.db)
我们已准备好升级到 Play 2.5,但无法理解文档。 2.4.2 的文档使用 Akka.system.dispatchers.lookup,我们使用它没有问题。 2.5.x 的文档使用 app.actorSystem.dispatchers.lookup。据我所知,我必须将应用程序注入一个类,而不是一个对象。然而文档清楚地使用了一个对象作为示例!
有没有人在 Play 2.5.x 中成功创建线程池以提供帮助?是否像将 Contexts 更改为一个类一样简单,然后在我想使用此线程的任何地方注入它?似乎很奇怪,因为使用默认的 ExecutionContext 我只需要进行隐式导入。
另外,我们正在使用 Play scala。
【问题讨论】:
-
隐式查找按类型发生,您不希望隐式范围内有多个具有相同类型的对象,所以我不会在这里做隐式注释。根据需要通过
implicit val ec = Contexts.db或任何您需要的方式进入范围。
标签: scala playframework threadpool playframework-2.5