我创建了一些演员,它应该用自己的消息包装所有传入的消息并进一步转发它们。 不幸的是,我没有任何用户消息的公共基类,所以我打算用Object.class来捕捉它们。akka是否自发地向自定义演员发送自己的消息?
现在我不确定阿卡是否可以将自己的消息发送给演员。我不想偶尔转发一些发给我的封装演员的系统消息。
我创建了一些演员,它应该用自己的消息包装所有传入的消息并进一步转发它们。 不幸的是,我没有任何用户消息的公共基类,所以我打算用Object.class来捕捉它们。akka是否自发地向自定义演员发送自己的消息?
现在我不确定阿卡是否可以将自己的消息发送给演员。我不想偶尔转发一些发给我的封装演员的系统消息。
Akka在内部向你的演员发送消息。这些消息扩展了内部SystemMessage
特征。正如源代码中的描述所述,系统消息在每个参与者的邮箱中形成自己的队列,并与其他消息分开处理。我们可以在Mailbox
和ActorCell
中追踪这些消息的处理。
当您的转发演员收到SystemMessage
时,该消息是而不是包裹和转发。 Akka在内部处理这些消息,因此转发角色的行为不会中断此系统级活动。
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"
}
}
}
感谢您的回答,但不清楚它是什么... 我的问题是:转发相关性 - 我想转发由用户发送的消息(自定义消息),而不是框架的消息。我不确定框架是否可以向用户定义的actor发送这样的内容。所以,如果是的话 - 简单的“全部转发”是不合适的策略。 – Silk0vsky