java - 如何在 Akka 2.5 中使用 Router 创建 actor Prop

标签 java akka

在 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 和其他一些旧的 Router 不再存在了。将这些路由行为添加到参与者的正确方法是什么?

最佳答案

Akka 2.5 有 BroadcastRoutingLogic 。以下示例来自documentation :

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");

关于java - 如何在 Akka 2.5 中使用 Router 创建 actor Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44312797/

相关文章:

java - 我在android studio中打错电话了吗?

java - JSch sftp 上传/下载进度

java - 如何从 HttpResponse 获取响应正文并使用 Akka HTTP 将其转换为 Java 对象

scala - 将 Akka 配置与我的配置相结合

java - Akka 中的 poststop 和 terminate 之间的区别?

akka - 配置 core-pool-size-factor 和 max-pool-size-factor 设置的一般好做法是什么?

java - stackmob 查询后标记未显示在 map 上

java - 在 hibernate 中使用 select where 查询

java - 如何处理一个表的外键映射到多个表的主键?

测试并发/并行执行