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

时间:2017-07-17 13:38:53

标签: akka messaging actor

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

来捕获它们

现在我不确定Akka是否可以向我的演员发送自己的消息。我不想偶尔转发一些发给我的包装器演员的系统消息。

2 个答案:

答案 0 :(得分:1)

Akka会在内部向您的演员发送消息。这些消息扩展了内部SystemMessage特征。正如源代码中的描述所述,系统消息在每个actor的邮箱中形成自己的队列,并与其他消息分开处理。我们可以在MailboxActorCell中跟踪这些邮件的处理情况。

当转发角色收到SystemMessage时,该邮件包装并转发。 Akka在内部处理这些消息,因此转发actor的行为不会破坏这种系统级活动。

答案 1 :(得分:0)

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"
    }
  }
}