如何以串行和并行方式处理这些基于偶数的消息?例如,当i为2,4,6,8时...以并行处理消息。
我认为消息是以串行方式处理的,但我如何区分才能并行处理它们呢?
for(i <- 1 to 100) {
greeter ! WhoToGreet("message: " + i)
inbox.send(greeter, Greet)
val Greeting(message) = inbox.receive(10.seconds)
println(message)
}我已经将application.conf修改为:
akka {
actor{
default-dispatcher {
type = Dispatcher
executor = "thread-pool-executor"
throughput = 100
fork-join-executor {
parallelism-min = 2
parallelism-factor = 2.0
parallelism-max = 8
}
}
}
}但我不确定这是一种方式,还是使用par。
我有没有办法知道什么时候是串行处理,什么时候是并行处理?
发布于 2014-12-29 05:38:33
参与者按顺序处理消息。这是模型的一部分。这确保了您不必考虑共享状态和锁定等问题。在我看来,对于你想要做的事情,你应该使用一些特殊的角色来处理每种类型的消息,并且/或者为它做一些路由器角色。
http://doc.akka.io/docs/akka/snapshot/scala/routing.html
注意:在application.conf中没有什么可触及的。
发布于 2014-12-29 06:22:26
如果需要并行处理消息,则需要多个参与者。正如@kaktusito提到的,一种方法是使用Akka路由器。
您可以尝试使用多个参与者来并行处理消息。例如,对于message#4,您最多只能有4个角色。但是对于message#32,你要么使用4个,要么使用16或32个角色。计算机的物理核心数量也将决定您应该并行运行的参与者的数量。
https://stackoverflow.com/questions/27680798
复制相似问题