How can I get the name of an Akka actor from within the actor itself?
ScalaAkkaScala Problem Overview
So, if I have an actor, I can give it a name. But, can I access that name internally? Example:
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"
Now, I can pass its name as a constructor parameter. But, that seems like unnecessary duplication if there is a way to get the name internally... as it was set when I instantiated the actor using system.actorOf
. API docs didn't seem to have anything.
Scala Solutions
Solution 1 - Scala
From an Actor
you can use self
to get the ActorRef
.
val actorName = self.path.name
http://doc.akka.io/api/akka/2.2.3/#akka.actor.Actor