我需要知道如何創建一個RoundRobinPool路由器角色,其中每個路由角色都有自己對另一個對象的引用。每個被告人所持有的參考資料必須有所不同。創建一個路由器參與者在akka java中參數化其每條路由的創建
辦法做到這將是這樣的:
ActorRef ref = system.actorOf(new RoundRobinPool(5).props(Props.create(Worker.class, new AnotherObject())),
"router");
,但這種方法的問題在於,每個工人都有相同的參考AnotherObject,我不希望副作用。
這將是這樣的,但有一個路由器演員:
List<Routee> routees = new ArrayList<Routee>();
for (int i = 0; i < 5; i++) {
ActorRef r = system.actorOf(Props.create(Worker.class, new AnotherObject()));
routees.add(new ActorRefRoutee(r));
}
Router router = new Router(new RoundRobinRoutingLogic(), routees); // That is a Router I need an ActorRef
已經有人知道怎樣做呢?
乾杯
我不想將參與者的路徑傳遞給組,因爲我也想動態地創建路由。 給我一個例子你的方式,以更好地理解你的答案。 – cs4r 2014-09-29 18:31:25
您可以創建一個名稱爲routee(例如''routee'+ i')並使用'List'來收集像'routees.add(「routee」+ i)'這樣的名稱。現在將'routees'名單傳遞給組,而不是傳遞ActorRefs。 –
2014-09-29 18:34:52
拉維基蘭用這麼少的代碼你的答案沒有太多有用的... – cs4r 2014-09-29 18:36:43