I follow the description of the plays on how to use actors: https://www.playframework.com/documentation/2.4.x/ScalaAkka they offer something like:
@Singleton class Application @Inject() (system: ActorSystem) extends Controller { val helloActor = system.actorOf(HelloActor.props, "hello-actor")
But this leads to:
play.sbt.PlayExceptions$CompilationException: Compilation error[trait Singleton is abstract; cannot be instantiated] at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27) ~[na:na] at play.sbt.PlayExceptions$CompilationException$.apply(PlayExceptions.scala:27) ~[na:na] at scala.Option.map(Option.scala:145) ~[scala-library-2.11.6.jar:na] at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:49) ~[na:na] at play.sbt.run.PlayReload$$anonfun$taskFailureHandler$1.apply(PlayReload.scala:44) ~[na:na] at scala.Option.map(Option.scala:145) ~[scala-library-2.11.6.jar:na] at play.sbt.run.PlayReload$.taskFailureHandler(PlayReload.scala:44) ~[na:na] at play.sbt.run.PlayReload$.compileFailure(PlayReload.scala:40) ~[na:na] at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17) ~[na:na] at play.sbt.run.PlayReload$$anonfun$compile$1.apply(PlayReload.scala:17) ~[na:na]
Tos sees what I have done or stick to: https://github.com/dataplayground/playground
Edit
Removing @Singleton results in:
could not find implicit value for parameter timeout: akka.util.Timeout
This is the code:
implicit val timeout = 5.seconds def sayHello(name: String) = Action.async { (helloActor ? SayHello(name)).mapTo[String].map { message => Ok(message) } }
Georg Heiler
source share