在scala演员之间循环消息

时间:2012-09-29 21:16:23

标签: scala actor

我正试图将一条消息(比如“msg”)从一个演员转发给另一个随机选择的演员。

除非随机选择的演员再次成为早期演员之一,否则它的效果非常好。 当这种情况发生时,Scala会无限期地等待。 我希望程序传递消息而不管它是否已经接收(即,在演员之间无限循环消息)

Actor A ---- msg ---> Actor B
Actor B ---- msg ---> Actor C
Actor C ---- msg ---> Actor A

在此之后,程序不会退出,也不会继续传递消息。 你能指出我错了吗?

class MyActor extends Actor {
def act() {
react{
case str : String =>
// Picking a random actor
val randNo : Int = Random.nextInt(5)
actorArray(randNo) ! str
}
}
}

谢谢, MS

1 个答案:

答案 0 :(得分:4)

你需要围绕你的react电话进行循环,让演员不止一次做出反应。

class MyActor extends Actor {
  def act() {
    loop {
      react {
        // ...
      }
    }
  }
}

请参阅此short tutorial on Scala actors