我有一个像这样的Akka路由器:
ActorRef router = getContext().actorOf(
new RoundRobinPool(instancecount)
.props(Props.create(Node.class, po)), po.getUID());
然后我想更改路由器instancecount.我该怎么办?
解决方法:
我认为Resizer可能是您可以尝试在路由器池中提供弹性以处理突发负载的工具.如果您想以编程方式设置带有调整器的路由器,则外观应类似于此(取自Routing上的Akka示例)
docs):
val resizer = DefaultResizer(lowerBound = 2, upperBound = 15)
val router3 = system.actorOf(Props[ExampleActor1].withRouter(
RoundRobinRouter(resizer = Some(resizer))))
在此示例中,该池将从2条路由开始,但根据通过路由器池头的消息量,可以扩展到15条路由.您也可以直接从akka配置中执行此操作.如果您有这样的配置(同样来自Akka docs):
akka.actor.deployment {
/myrouter2 {
router = round-robin
resizer {
lower-bound = 2
upper-bound = 15
}
}
}
然后,您可以像这样设置池以利用配置:
val router = system.actorOf(Props[ExampleActor].withRouter(FromConfig()), "myrouter2")
查看我链接到的文档,以获取有关如何为您的游泳池设置调整大小的更多信息.希望这是一个满足您需求的解决方案.