如果這是一個重複的問題,請道歉。Akka:從一名演員轉發到另一名演員
我是AKKA的新手,並試圖擴展akka-java-spring示例代碼以添加另一個actor並擁有一個不可變對象Counter用作要發送給CoutingActor的消息,該消息打印消息並將其轉發給一個PrintMessageActor(新演員)。如何將消息從CoutingActor轉發給PrintMessageActor。在這種情況下,如何使用文檔中的以下片段來使用它。
target.forward(result, getContext());
如何獲得第一個演員的目標(第二個演員)?
謝謝比約恩。我會嘗試使用第二個選項。我也想爲CoutingActor和PrintMessageActor創建子actor。在父母角色中如何創建子動作者以及子角色如何處理消息? 我想要做的是 - 傳遞消息給CoutingActor - 這個actor的孩子打印一條消息,然後消息被傳遞給PrintMessageActor - 它有孩子,他們打印一條消息。我也想控制父母演員可以擁有的兒童人數。如果您能指出我朝着正確的方向,我將不勝感激。 – Sachin
Hallo Sachin。您可以根據需要創建儘可能多的兒童演員。創建一級演員和小孩演員之間唯一的區別就是爲您創作的對象。如果你想創建一個第一級的actor(比如「/ user/MyActor」),那麼你直接使用ActorSystem,比如說ActorRef的system.actorOf(...)或者ActorSelection的system.actorSelection(...) 。可以使用ActorContext從Actor中創建子actor。 (context.actorOf/.actorSelection) –
(續)發送所有孩子相同的消息(廣播)可以通過兩種方式實現。您可以迭代父代actor的「children」屬性,向他們發送所有相同的消息 - 或者使用稱爲Router的特殊類型的中介actor。該路由器有幾種不同的實現方式,一種是適合您需求的BroadcastRouter。但在這樣一個簡單的情況下,我個人更喜歡只是迭代孩子。 –