我創建了一些演員,它應該用自己的消息包裝所有傳入的消息並進一步轉發它們。 不幸的是,我沒有任何用戶消息的公共基類,所以我打算用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