2017-07-17 74 views
0

我创建了一些演员,它应该用自己的消息包装所有传入的消息并进一步转发它们。 不幸的是,我没有任何用户消息的公共基类,所以我打算用Object.class来捕捉它们。akka是否自发地向自定义演员发送自己的消息?

现在我不确定阿卡是否可以将自己的消息发送给演员。我不想偶尔转发一些发给我的封装演员的系统消息。

回答

1

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

当您的转发演员收到SystemMessage时,该消息是而不是包裹和转发。 Akka在内部处理这些消息,因此转发角色的行为不会中断此系统级活动。

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

感谢您的回答,但不清楚它是什么... 我的问题是:转发相关性 - 我想转发由用户发送的消息(自定义消息),而不是框架的消息。我不确定框架是否可以向用户定义的actor发送这样的内容。所以,如果是的话 - 简单的“全部转发”是不合适的策略。 – Silk0vsky

相关问题