Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何获得阿克卡演员作为演员的名字?_Scala_Akka - Fatal编程技术网

Scala 如何获得阿克卡演员作为演员的名字?

Scala 如何获得阿克卡演员作为演员的名字?,scala,akka,Scala,Akka,在阿卡,我可以创造一个演员如下 Akka.system(app).actorOf(Props(classOf[UnzipActor]), name="somename") 那么我在另一个班,我怎么能得到这个演员呢 我可以获得一个ActorSelection lazy val unzip: ActorSelection = Akka.system.actorSelection("user/" + "somename") 然而,ActorSelection不是我想要的;我想要一个ActorR

在阿卡,我可以创造一个演员如下

Akka.system(app).actorOf(Props(classOf[UnzipActor]), name="somename")
那么我在另一个班,我怎么能得到这个演员呢

我可以获得一个
ActorSelection

lazy val unzip: ActorSelection =
  Akka.system.actorSelection("user/" + "somename")
然而,
ActorSelection
不是我想要的;我想要一个
ActorRef
。如何获得
ActorRef

我想要一个
ActorRef
,因为我希望使用调度程序调度对
ActorRef
的调用

Akka.system(app).scheduler.schedule(
  5 seconds, 60 seconds, mustBeActorRef, MessageCaseClass())
:

要获取绑定到特定参与者生命周期的
ActorRef
,您需要向参与者发送消息,如内置消息,并使用参与者回复的
sender()
引用


但对于您正在描述的情况,可能更适合使用调度程序将消息发送到您已经拥有的
ActorRef
(如
self
或新的临时actor),并通过将
MessageCaseClass
发送到
actorSelection(“user/somename”)来响应该消息

您可以使用ActorSelection上的方法
resolveOne
异步获取ActorRef

implicit val timeout = Timeout(FiniteDuration(1, TimeUnit.SECONDS))
Akka.system.actorSelection("user/" + "somename").resolveOne().onComplete {
  case Success(actorRef) => // logic with the actorRef
  case Failure(ex) => Logger.warn("user/" + "somename" + " does not exist")
}

ref:

为什么需要actor ref,您可以将消息发送到ActorElection。但是,如果要在父上下文中查找子参与者,则可以使用getContext().child(“somename”)参见此处