首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置Akka参与者基于谓词以串行和并行方式处理消息?

如何设置Akka参与者基于谓词以串行和并行方式处理消息?
EN

Stack Overflow用户
提问于 2014-12-29 05:34:28
回答 2查看 1.3K关注 0票数 0

如何以串行和并行方式处理这些基于偶数的消息?例如,当i为2,4,6,8时...以并行处理消息。

我认为消息是以串行方式处理的,但我如何区分才能并行处理它们呢?

代码语言:javascript
复制
for(i <- 1 to 100) {
  greeter ! WhoToGreet("message: " + i)
  inbox.send(greeter, Greet) 
  val Greeting(message) = inbox.receive(10.seconds)
  println(message)
}

我已经将application.conf修改为:

代码语言:javascript
复制
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。

我有没有办法知道什么时候是串行处理,什么时候是并行处理?

EN

回答 2

Stack Overflow用户

发布于 2014-12-29 05:38:33

参与者按顺序处理消息。这是模型的一部分。这确保了您不必考虑共享状态和锁定等问题。在我看来,对于你想要做的事情,你应该使用一些特殊的角色来处理每种类型的消息,并且/或者为它做一些路由器角色。

http://doc.akka.io/docs/akka/snapshot/scala/routing.html

注意:在application.conf中没有什么可触及的。

票数 1
EN

Stack Overflow用户

发布于 2014-12-29 06:22:26

如果需要并行处理消息,则需要多个参与者。正如@kaktusito提到的,一种方法是使用Akka路由器。

您可以尝试使用多个参与者来并行处理消息。例如,对于message#4,您最多只能有4个角色。但是对于message#32,你要么使用4个,要么使用16或32个角色。计算机的物理核心数量也将决定您应该并行运行的参与者的数量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27680798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档