【问题标题】:Use actors in play在游戏中使用演员
【发布时间】:2016-02-28 06:04:56
【问题描述】:

我按照戏剧描述如何使用演员:https://www.playframework.com/documentation/2.4.x/ScalaAkka 他们建议类似:

@Singleton
class Application @Inject() (system: ActorSystem) extends Controller {

  val helloActor = system.actorOf(HelloActor.props, "hello-actor")

  //...
}

但这会导致:

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 看看我做了什么或跟随:https://github.com/dataplayground/playground

编辑:

删除@Singleton 会导致:

could not find implicit value for parameter timeout: akka.util.Timeout

这是代码:

implicit val timeout = 5.seconds

def sayHello(name: String) = Action.async {
  (helloActor ? SayHello(name)).mapTo[String].map { message =>
    Ok(message)
  }
}

【问题讨论】:

  • 好的 - 那么文档是否过时了?至少这个错误消失了。但是,该示例似乎仍然存在问题。见编辑
  • implicit val timeout = akka.util.TimeOut(5.seconds)
  • 顺便说一句,你导入javax.inject.Singleton了吗?
  • 非常感谢!这就是解决方案。我应该写一个解决方案吗?还是你想写一个?
  • 不,我没有导入@Singleton,因为这里没有提到它:playframework.com/documentation/2.4.x/ScalaAkka

标签: playframework singleton akka playframework-2.4


【解决方案1】:

使用

implicit val timeout = akka.util.Timeout(5.seconds)

import javax.inject.Singleton

【讨论】:

  • + @Singleton 的原始问题似乎已通过此修复解决。因此可以将其与 javax.inject.Singleton 的导入一起使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
相关资源
最近更新 更多