我試圖複製Integrating with Akka, Play 2.4 for Scala doc中提出的基本示例。但是我對將最終拼湊困難......在Play Framework 2.4中爲Scala實現Akka
我已經定義了演員(見第Writing actors)在app/actors/HelloActor.scala
用下面的代碼:
package actors
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
}
}
然後(見Creating and using actors)我想我應該創建於app/controllers/Hello.scala
控制器的東西,如:
package controllers
import play.api.mvc._
import akka.actor._
import javax.inject._
import actors.HelloActor
@Singleton
class Hello @Inject() (system: ActorSystem) extends Controller {
val helloActor = system.actorOf(HelloActor.props, "hello-actor")
...
}
的問題:在哪裏和我如何利用代碼下段Asking things of actors有一個有效的解決方案?我試圖將它添加到上面的Hello.scala
控制器,但沒有成功。
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import scala.concurrent.duration._
import akka.pattern.ask
implicit val timeout = 5.seconds
def sayHello(name: String) = Action.async {
(helloActor ? SayHello(name)).mapTo[String].map { message =>
Ok(message)
}
}
這應該按預期工作,你有什麼錯誤? –
with'implicit val timeout = 5.seconds'我試圖得到以下錯誤:value seconds不是int的成員注意:隱式值超時在這裏是不適用的,因爲它在應用程序點之後,並且它沒有顯式的結果類型'加上我並不是100%確定如何將所有東西放在控制器中 – user2364174