2013-04-28 324 views
2

我想將一個序列化Actor與其狀態一起傳遞給另一個Actor(這樣它就可以通過網絡進行遷移)。是否有任何API或應該從頭開始實施?阿卡是否支持高階演員?

+0

簡短的回答是否定的,但是更長的答案是使用每個@cmbaxter的遠程處理,你實際上不能發送一個actor這已經創建,但您可以使用其所有參數(狀態)遠程創建新的actor。 – sourcedelica 2013-04-28 15:54:40

回答

2

我相信這種類型的功能在阿卡支持Remoting。看看這個鏈接,開啓編程遠程部署專門的部分,看看是否是你在找什麼:

http://doc.akka.io/docs/akka/2.1.2/java/remoting.html

此外,ActorRefs是序列化的,所以你當然可以傳遞一個ActorRef到其他演員一個遙控器上然後將消息發回給您提供的ref,導致消息返回到起始節點。

還有一件事要考慮。實際上,您無法將Actor實例傳遞給另一個actor,但您實際上可以傳遞的是ActorRef,這是一個輕量級句柄,用於回調ref表示的Actor實例。如果您確實想要將演員實例遷移到另一個節點,那麼請閱讀「編程式遠程部署」功能。如果您只是想在兩個在不同節點上運行的actor實例之間來回通信,則可以使用ask (?)來獲取請求/響應行爲(在接收actor中使用sender var將返回給主叫actor或通過發送ActorRef (via context.self)along via via tell (!) and then use the ref in the receiving actor to send a message back。