假设我有一个非常简单的 actor 类,它可以接收任何消息并将其打印到控制台。
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
之间的区别,因为在复杂场景(生产系统)中,如果Actor出现故障,例如抛出异常,则this
的值会发生变化。