akka 是否主动向自定义 actor 发送自己的消息?

Does akka send own messages to custom actor by own initiative?

我正在创建一些 actor,它应该用自己的消息包装所有传入的消息并进一步转发它们。 不幸的是,我没有任何共同的基础 class 用于用户消息,所以我将使用 Object.class

来捕捉它们

现在我不确定 Akka 是否可以向我的 Actor 发送自己的消息。我不想偶尔转发一些发送给我的 wrapper actor 的系统消息。

class WrapAndForwardActor extends Actor {
  override def receive: Receive = {
    case _ => {
      // blocking
      // do whatever you want to do with the incoming message
      sender forward "WrappedMessage"
    }

    case "AnotherExample" => {
      // non blocking
      val sendTo = sender()

      // do whatever you want to do with the message
      // non blocking futures

      //when future is complete
      sendTo forward "WrappedMessage"
    }
  }
}

Akka 会在内部向您的 actor 发送消息。这些消息扩展了内部 SystemMessage trait. As the description in the source code states, system messages form their own queue in each actor's mailbox and are handled separately from other messages. We can trace the processing of these messages in Mailbox and ActorCell.

当您的转发演员收到 SystemMessage 时,该消息 包装和转发。 Akka 在内部处理这些消息,因此您的转发 actor 的行为不会破坏此系统级别 activity.