4

所以我开始在我的 Play 2.0 应用程序中使用 Akka 演员。我很快注意到重复调用向同一个参与者发送消息,通过以下方式指定:

val myActor = Akka.system.actorOf(Props[MyActor], name = "myactor")

结果InvalidActorNameException.

然后我开始阅读这个文档中的 Actors 的创建

该文档似乎建议创建一个“主” Actor 类,其中指定了所有单独的演员。receive反过来,这个 Actor 类的 将匹配消息并将消息委托给适当的 Actor 。

所以我尝试了这个,现在有类似的东西:

class MasterActor extends Actor{
  import context._
  val emailActor = actorOf(Props[EmailActor], name = "emailActor")
  protected def receive = {
    case reminder : BirthdayReminder => emailActor ! reminder
  }

}

问题是我和以前一样。InvalidActorNameException当我尝试以下操作时,我不知道如何避免:

    val myActor = Akka.system.actorOf(Props[MasterActor], name = "MasterActor")
    myActor ! BirthdayReminder(someBirthday)

那么组织我的演员的正确方法是什么?

4

1 回答 1

2

如果您只想要一个 MasterActor,为什么要创建多个?您应该只查找您已经创建的那个:

val actorRef = context.actorFor("MasterActor")
actorRef ! BirthdayReminder(someBirthday)
于 2012-12-28T15:24:25.183 回答