如果您想同时执行长时间运行的计算(在单台机器上),Akka 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 炸毁系统吗?