从akka中的ActorRef获取数据

时间:2013-12-16 20:35:29

标签: scala akka actor

我在akka中有以下Actor模型声明:

val wireA = system.actorOf(Props(new Wire(false)), "Input")
val wireB = system.actorOf(Props(new Wire(false)), "Output")
inverter ! generateOutput(wireA, wireB)

来自generateOutput(input:ActorRef, output:ActorRef), 我需要访问构造每个特定boolean的{​​{1}}参数(即在每个相应的ActorRef构造函数中找到的参数false

如何达成?

2 个答案:

答案 0 :(得分:2)

您可以向每个演员发送消息,询问其当前状态:

case object Status
case object StatusResult(value: Boolean)

class MyActor(wire: ActorRef) extends Actor {

  wire ! Status

  def receive = {
    case StatusResult(value) => ...
  }

wireAwireBActorRef,他们不会公开他们的状态,与他们沟通的唯一方法是通过消息。

答案 1 :(得分:2)

这不是你应该玩Actors的方式。你得到了ActorRef,你只用它来玩它。你可以通过向它传递一个消息来询问actor的boolean值:

wireA! “GETVAL”

并等待发送方actor中的响应。请查看Actors的基本教程:

http://alvinalexander.com/scala/scala-akka-actors-ping-pong-simple-example