如何混合有型和无类型的演员?

时间:2015-07-25 00:27:37

标签: scala akka actor akka-http akka-typed

如何混合使用打字和无类型的演员?据我所知,当我像这样创建ActorSystem的实例时,我必须指定主角色

val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main", Props(mainBehaviour))

另一方面,我使用像这样初始化的akka​​-http

implicit val system = ActorSystem()
implicit val executor = system.dispatcher
implicit val materializer = ActorMaterializer()
// etc...

我看到我可以通过调用

从无类型系统创建类型化系统
object ActorSystem {
  def apply(untyped: akka.actor.ActorSystem): ActorSystem[Nothing] = new Wrapper(untyped.asInstanceOf[ExtendedActorSystem])
}

所以假设我做了

val typeSystem = akka.typed.ActorSystem(untypedSystem)

如何从typeSystem创建我的第一个类型演员?没有键入的ActorContext actorOf我可以致电。

我读过的关于这个主题的其他材料是

1 个答案:

答案 0 :(得分:3)

好的捕获,目前不太方便:你需要做的是创建类型化的ActorSystem,然后访问底层的非类型化的,以启动HTTP扩展,但underlying方法是{ {1}}。您可以通过在项目中的Akka名称空间中放置一些帮助程序代码来访问它,或者您可以反过来:

private[akka]