我有一個List(例如一個數據庫查詢的輸出)變量,我用它來創建角色(他們可能很多,而且各不相同)。我用下面的代碼(在TestedActor預起動()),演員限定名是從List變量爲例):從字符串類名創建AKKA actor角色
Class<?> classobject = Class.forName("com.java.anything.actor.MyActor"); //create class from name string
ActorRef actref = getContext().actorOf(Props.create(classobject), actorname); //creation
代碼進行了測試:
@Test
public void testPreStart() throws Exception {
final Props props = Props.create(TestedActor.class);
final TestActorRef<TestedActor > ref = TestActorRef.create(system, props, "testA");
@SuppressWarnings("unused")
final TestedActor actor = ref.underlyingActor();
}
編輯:它是工作正常(與之前的帖子相反,在那裏我看到超時錯誤,結果是一個無關的警報)。
我已經搜索了一些與此問題相關的帖子(例如,建議使用newInstance),但是我仍然感到困惑,因爲這些被提到它作爲一個壞模式被取代。所以,我正在尋找java中的解決方案,從akka的角度來看也是安全的(或者上述模式的確認)。
這是科學計劃,演員是數學生物進行計算,演員序列可能會被用戶重新排列。我選擇反射作爲一個簡單的XML文件可以以任何新的方式設置一切。不過,你可能是對的,演員必須在之前創建,只有在xml中描述接線。謝謝你指出。 – user1229873
只是一個想法。如果我理解正確,你有一些微積分管道,其中一個結果作爲輸入傳遞給另一個結果。你可能會考慮放棄演員並單獨使用Futures,因爲他們結合得很好。 – almendar
是的,我也會考慮期貨,但是我們在一些計算中投票給演員,因爲我們需要大量的並行。 – user1229873