我试图复制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