gpt4 book ai didi

scala - 我如何混合打字和非打字 Actor ?

转载 作者:行者123 更新时间:2023-12-04 12:40:24 25 4
gpt4 key购买 nike

我如何混合有类型和无类型的转换?据我了解,当我创建 ActorSystem 的实例时,我必须指定主要 Actor 像这样

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我可以打电话。

我读过的关于这个主题的其他 Material 是
  • http://blog.scalac.io/2015/04/30/leszek-akka-typed.html
  • http://www.slideshare.net/ktoso/fresh-from-the-oven-042015-experimental-akka-typed-and-akka-streams
  • https://github.com/rubendg/innovation-day-akka-typed
  • 最佳答案

    很好,这目前不太方便:您需要做的是创建类型化的 ActorSystem,然后访问底层的非类型化的 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

    关于scala - 我如何混合打字和非打字 Actor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31621607/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com