我想这可能是不可能的,因为需要重新创建演员的监督策略,但是我能够将自定义演员提供给路由器吗?或者至少:自定义构造函数参数?
如果不是,为什么akka不允许这样做?路由不是假设以这种方式使用?顺便说一下,我正在使用BalancingPool。
这似乎可以在Scala How to create routers in akka with parameterized actors?中使用,但我无法在java中解决这个问题。
答案 0 :(得分:2)
池不可能,因为池创建了来自相同Props
定义的多个实例,但通常可以使用路由。来自文档:
这种类型的路由器演员有两种不同的风格:
- 池 - 路由器将路由创建为子actor,如果它们终止则将它们从路由器中删除。
- Group - 在路由器外部创建routee actor,路由器使用actor选择将消息发送到指定路径, 没有注意终止。
如果您创建的是组而不是池,则该组可以包含您想要的任何演员。
答案 1 :(得分:1)
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);
}
// ...
}
因此,您可以按照自己的方式创建路线。