簡體   English   中英

如何在Akka 2.5中使用Router創建演員道具

[英]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);
}

您也可以使用BroadcastPoolBroadcastGroup

在配置中定義的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM