sender() 指向来自 actor 系统的消息的死信

sender() pointing to dead letter for the message from actor system

请查看下面的代码并解释为什么我的输出指向死信。

class DemoActor extends  Actor {
  def receive = {
    case "foo" => println(sender())
  }
}


object Main extends App {
  val actorSystem = ActorSystem("DemoSystem")
  val demoActorRef = actorSystem.actorOf(Props[DemoActor])
  demoActorRef ! "foo"
}

输出:

Actor[akka://DemoSystem/deadLetters]

提前致谢

这是因为演员系统没有可以发布回复的邮箱。

发件人引用用于发送回复,而联系的参与者不需要知道是谁调用它,以及询问机制。

您可以通过尝试从另一个演员与系统进行相同的调用来实际看到这一点,并且您会看到发件人引用在从另一个演员调用时有效。