Допустим, у меня есть очень простой класс актера, который получает любое сообщение и выводит его на консоль.
class SimpleActor extends Actor{
def receive: Receive = {
case message =>
println(s"[${this}][${self}] received message: ${message}")
}
}
val simpleActor = actorSystem.actorOf(Props[SimpleActor], "simpleActor")
simpleActor ! "Hey"
Как видите, здесь я использую как this
, так и self
, и оба имеют разные значения. Его вывод выглядит примерно так:
[pkg.ActorRunner$SimpleActor@65cca69][Actor[akka://ActorDemo/user/simpleActor#934141660]] received message: Hey
Я хочу понять разницу между self
и this
, потому что в сложных сценариях (производственная система), если актор ломается, например: выдает исключение, я думаю, что значение для this
изменяется.