InvalidActorNameException - actor名称{name}不是唯一的

时间:2012-12-28 15:19:46

标签: scala playframework playframework-2.0 akka

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

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

导致InvalidActorNameException

然后我开始阅读这个doc

中Actors的创建

doc似乎建议创建一个“主”Actor类,其中包含指定的所有单个actor。反过来,这个actor类的receive将匹配消息,并将消息委托给相应的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)

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

1 个答案:

答案 0 :(得分:2)

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

val actorRef = context.actorFor("MasterActor")
actorRef ! BirthdayReminder(someBirthday)