3
我試圖用Play 2.5來測試Akka,而且我遇到了編譯錯誤,我似乎無法繞過。與Akka一起玩2.5 - 找不到參數超時的隱含值:akka.util.Timeout
我從玩文檔下面這個頁面: https://playframework.com/documentation/2.5.x/ScalaAkka
下面是完整的代碼:
package controllers
import javax.inject.{Inject, Singleton}
import akka.actor.ActorSystem
import controllers.HelloActor.SayHello
import play.api.mvc._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import scala.concurrent.duration._
import akka.pattern.ask
@Singleton
class Application @Inject()(system: ActorSystem) extends Controller {
implicit val timeout = 5.seconds
val helloActor = system.actorOf(HelloActor.props, "hello-actor")
def sayHello(name: String) = Action.async {
(helloActor ? SayHello(name)).mapTo[String].map { message =>
Ok(message)
}
}
}
import akka.actor._
object HelloActor {
def props = Props[HelloActor]
case class SayHello(name: String)
}
class HelloActor extends Actor {
import HelloActor._
def receive = {
case SayHello(name: String) =>
sender() ! "Hello, " + name
}
}
我的路線是這樣的:
GET /:name controllers.Application.sayHello(name: String)
最後, my build.sbt:
name := "AkkaTest"
version := "1.0"
lazy val `akkatest` = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(jdbc , cache , ws , specs2 % Test)
unmanagedResourceDirectories in Test <+= baseDirectory (_ /"target/web/public/test")
resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"
routesGenerator := InjectedRoutesGenerator
當我嘗試運行它,我得到以下編譯錯誤:
could not find implicit value for parameter timeout: akka.util.Timeout
我已經試過周圍的超時移動無濟於事。有沒有人有一個想法可能會導致此編譯錯誤?
哇,謝謝!我不能相信我錯過了 - 現在完美的作品。 – Nick
對於記錄,2.5 docs具有如下行'implicit val timeout = 5.seconds',它無法工作(具有相同的上述錯誤),直到您明確添加TYPE如下:'implicit val timeout:Timeout = 5。 seconds' – Techmag