我正在制作一个基于scala akka的系统,它会动态地将新的actor(代表用户)添加到现有的层次结构中,因此我需要知道给定的消息是否应该导致在层次结构中创建一个新的actor(如果它没有或不存在。我想我真正想要的是像actorSelection这样的方法,它会返回结果集中的actor数,而不是结果集本身。
如果actor已存在此名称,则以下代码将引发异常:
case u:UserAdded => {
context.actorOf(Props[HashActor],u.user.hash()) ! u
}
答案 0 :(得分:1)
感谢https://groups.google.com/forum/?fromgroups=#!topic/akka-user/jnv1CrdPKns我想这比我想的要容易得多:
case u:UserAdded =>
val target = context.actorFor(u.user.hash) match {
case noref if noref.isTerminated => context.actorOf(Props[HashActor], u.user.hash)
case ref => ref
}
target forward u