[英]How to create actor props with Router in Akka 2.5
在Akka 2.0中,我們曾經擁有
List<String> routeePaths = actorRefs.stream()
.map(e -> e.path().toString())
.collect(toList());
Props routerProps = Props.empty().withRouter(new BroadcastRouter(routeePaths));
但是在Akka 2.5中,不再提供BroadcastRouter和其他一些舊路由器。 將這些路由行為添加到參與者的正確方法是什么?
Akka 2.5具有BroadcastRoutingLogic
。 以下示例來自文檔 :
Router router;
{
List<Routee> routees = new ArrayList<Routee>();
for (int i = 0; i < 5; i++) {
ActorRef r = getContext().actorOf(Props.create(Worker.class));
getContext().watch(r);
routees.add(new ActorRefRoutee(r));
}
router = new Router(new BroadcastRoutingLogic(), routees);
}
您也可以使用BroadcastPool
或BroadcastGroup
:
在配置中定義的BroadcastPool
:
akka.actor.deployment {
/parent/router13 {
router = broadcast-pool
nr-of-instances = 5
}
}
ActorRef router13 = getContext().actorOf(FromConfig.getInstance().props(Props.create(Worker.class)), "router13");
在代碼中定義的BroadcastPool
:
ActorRef router14 = getContext().actorOf(new BroadcastPool(5).props(Props.create(Worker.class)), "router14");
在配置中定義的BroadcastGroup
:
akka.actor.deployment {
/parent/router15 {
router = broadcast-group
routees.paths = ["/user/workers/w1", "/user/workers/w2", "/use/workers/w3"]
}
}
ActorRef router15 = getContext().actorOf(FromConfig.getInstance().props(), "router15");
代碼中定義的BroadcastGroup
:
List<String> paths = Arrays.asList("/user/workers/w1", "/user/workers/w2", "/user/workers/w3");
ActorRef router16 = getContext().actorOf(new BroadcastGroup(paths).props(), "router16");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.