可以为每个Actor指定自定义Routees或自定义构造函数参数

时间:2015-09-08 13:59:25

标签: java akka

我想这可能是不可能的,因为需要重新创建演员的监督策略,但是我能够将自定义演员提供给路由器吗?或者至少:自定义构造函数参数?

如果不是,为什么akka不允许这样做?路由不是假设以这种方式使用?顺便说一下,我正在使用BalancingPool。

这似乎可以在Scala How to create routers in akka with parameterized actors?中使用,但我无法在java中解决这个问题。

2 个答案:

答案 0 :(得分:2)

池不可能,因为池创建了来自相同Props定义的多个实例,但通常可以使用路由。来自文档:

  

这种类型的路由器演员有两种不同的风格:

     
      
  • 池 - 路由器将路由创建为子actor,如果它们终止则将它们从路由器中删除。
  •   
  • Group - 在路由器外部创建routee actor,路由器使用actor选择将消息发送到指定路径,   没有注意终止。
  •   

如果您创建的是组而不是池,则该组可以包含您想要的任何演员。

答案 1 :(得分:1)

来自Routing documentation

public class Master extends UntypedActor {

    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 RoundRobinRoutingLogic(), routees);
    }
// ...
}

因此,您可以按照自己的方式创建路线。