我有一個阿卡路由器這樣的:如何更改阿卡路由器的大小?
ActorRef router = getContext().actorOf(
new RoundRobinPool(instancecount)
.props(Props.create(Node.class, po)), po.getUID());
然後我想更改路由器instancecount
。我該怎麼辦?
我有一個阿卡路由器這樣的:如何更改阿卡路由器的大小?
ActorRef router = getContext().actorOf(
new RoundRobinPool(instancecount)
.props(Props.create(Node.class, po)), po.getUID());
然後我想更改路由器instancecount
。我該怎麼辦?
我認爲Resizer
可能是你可以嘗試給你彈性在你的路由器池來處理突發負載。如果你想以編程方式設置與重新定尺寸的路由器,那麼這將是這個樣子(從阿卡例如在Routing 文檔拍攝):
val resizer = DefaultResizer(lowerBound = 2, upperBound = 15)
val router3 = system.actorOf(Props[ExampleActor1].withRouter(
RoundRobinRouter(resizer = Some(resizer))))
在這個例子中,池將開出2個routees,但可以根據通過路由器池頭部的消息量來擴展至15。你也可以直接從你的akka配置中做到這一點。如果您有(從阿卡文檔再次)這樣的配置:
akka.actor.deployment {
/myrouter2 {
router = round-robin
resizer {
lower-bound = 2
upper-bound = 15
}
}
}
,那麼你可以設置你的游泳池像這樣採取配置的優勢:
val router = system.actorOf(Props[ExampleActor].withRouter(FromConfig()), "myrouter2")
退房,我聯繫到文檔有關如何爲您的游泳池設置Resizer
的更多信息。希望這是滿足您需求的解決方案。
謝謝。您在示例中創建路由器池時使用Resizer,但是我想在創建後更改它,並且我不知道創建路由器池時的上限,因此還有其他方法可以更改路由器的大小路由器池?或者我們可以在創建後更改Resizer的上限嗎? – lol
爲什麼要在創建後更改它? – mavilein
因爲我想通過使用控制頁面來修改路由器的大小,並且在生產環境中這將不時修改 – lol
但是最有可能的事情是將路由器的大小與可用內核數量。這是不太可能改變的。我不認爲這很容易實現。我想你必須停止舊的路由器,並用上面的代碼片段創建一個新路由器。但是您可以使用消息來執行此操作:-) – mavilein