gpt4 book ai didi

scala - Akka: Actor 生成与填满邮箱

转载 作者:行者123 更新时间:2023-12-04 15:54:14 24 4
gpt4 key购买 nike

如果您想并发执行长时间运行的计算(在一台机器上),Akka actors 可以提供帮助。

一种方法是为每件作品生成一个新 Actor 。有点像

while(true) {
val actor = system.actorOf(Props[ProcessingActor])
(actor ? msg).map {
...
system.stop(actor)
}
}

第二个想法是在路由器后面配置一定数量的参与者。然后将所有消息发送到路由器。

val router = system.actorOf(Props[ProcessingActor].withRouter(RoundRobinRouter(nrOfInstances = 5)))
while(true) {
(router ? msg).map { ... }
}

我想知道,如果系统过载(传入消息的速率高于处理速率)哪个更好?

哪个会持续更长时间?两者最终都会因 OOMError 炸毁系统吗?

最佳答案

在为每个任务创建新的 Actor 之前,您也可以只使用 Future。这实际上取决于您想要实现的目标。要以最少的内存使用量完成尽可能多的工作,您应该使用 actor/router 方法。 Futures 更昂贵,因为每个任务都会创建一个新的 FuturePromise 实例。但这实际上取决于您的用例,哪种方法更好。我只是不会创造很多 Actor ,当真的不需要他们的时候。特别是 system.actorOf 总是会创建一个新的错误内核。

关于scala - Akka: Actor 生成与填满邮箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10412565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com