我如何混合打字和非打字的演员?
我如何混合打字和非打字的演员? 据我ActorSystem
当我创建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
创建我的第一个类型的actor? 有没有类型化ActorContext
其actorOf
我可以打电话。
我读过关于这个主题的其他材料
好的方面,目前不太方便:您需要做的是创建类型化的ActorSystem,然后访问底层的非类型化的以启动HTTP扩展,但underlying
方法是private[akka]
。 你可以通过在Akka命名空间中的项目中放置一些帮助代码来访问它,或者你也可以通过其他方式来访问:
implicit val untyped = akka.actor.ActorSystem("main")
import untyped.dispatcher
implicit val mat = ActorMaterializer()
import akka.typed.Ops._
val typedRef = untyped.spawn(Props(mainBehaviour))
val typedSys = ActorSystem(untyped)
Http().bind(...) // and send things to typed
链接地址: http://www.djcxy.com/p/27783.html