加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何混合使用类型和无类型的actor?

发布时间:2020-12-16 19:13:48 所属栏目:安全 来源:网络整理
导读:我如何混合有型和无类型的演员?据我所知,当我像这样创建ActorSystem实例时,我必须指定主actor val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main",Props(mainBehaviour)) 另一方面,我使用像这样初始化的akka??-http implicit val
我如何混合有型和无类型的演员?据我所知,当我像这样创建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.

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

> 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然后访问底层的无类型的一个以启动HTTP扩展,但底层方法是私有的[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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读