如何从演员本身中获取 Akka 演员的名字?

Posted

技术标签:

【中文标题】如何从演员本身中获取 Akka 演员的名字?【英文标题】:How can I get the name of an Akka actor from within the actor itself? 【发布时间】:2013-11-22 03:17:25 【问题描述】:

所以,如果我有一个演员,我可以给它起个名字。但是,我可以在内部访问该名称吗?示例:

class Actorz extends Actor with ActorLogging 
   val actorName = //??What function

   def receive = 
     case x => log.debug(actorName+": Received Message: "+x)
   


val actor = system.actorOf(Props[Actorz], "named")
actor ! "dogs"

现在,我可以将其名称作为构造函数参数传递。但是,如果有办法在内部获取名称,这似乎是不必要的重复......因为它是在我使用 system.actorOf 实例化演员时设置的。 API 文档似乎没有任何内容。

【问题讨论】:

如果你使用ActorLogging,为什么需要演员的name?记录器默认提供所有需要的关于演员的信息来检测一个。 【参考方案1】:

Actor,您可以使用self 获取ActorRef

val actorName = self.path.name

http://doc.akka.io/api/akka/2.2.3/#akka.actor.Actor

http://doc.akka.io/api/akka/2.2.3/#akka.actor.ActorRef

http://doc.akka.io/api/akka/2.2.3/#akka.actor.ActorPath

【讨论】:

以上是关于如何从演员本身中获取 Akka 演员的名字?的主要内容,如果未能解决你的问题,请参考以下文章

如何从演员内部获取绝对远程演员网址?

akka http:Akka 流与演员建立休息服务

如何在非对称系统中将对象发送到远程 akka 演员

Java Akka Actor 和流

Akka演员(Scala)如何在内存不足时获得堆转储[重复]

使用 akka 演员休眠