相关疑难解决方法(0)

为什么我的演员调度在Akka缩小了?

我有一个100个运行Actors的actor池,它共享一个工作窃取调度程序,其CorePoolSize设置为100.但是现在当向一个Actors发送19条消息时,19条消息没有并行化到19个Actors,只有5条消息正在运行在平行下.当这5条消息完成后,接下来的5条消息将由这些相同的5个Actors再次处理,依此类推.为什么我的19条消息并行运行,我在这里缺少什么?

我的代码基本上看起来像这样:

object TestActor {
  val dispatcher = Dispatchers.newExecutorBasedEventDrivenWorkStealingDispatcher("pool")
                   .setCorePoolSize(100)
                   .setMaxPoolSize(100)
                   .build
}

class TestActor(val name: Integer) extends Actor {
    self.lifeCycle = Permanent
    self.dispatcher = TestActor.dispatcher
    def receive = {
       case num: Integer => {  println("Actor: " + name + " Received: " + num)
                               Thread.sleep(10000)
                            }
    }
}

trait CyclicLoadBalancing extends LoadBalancer { this: Actor =>
    val testActors: List[ActorRef]
    val seq = new CyclicIterator[ActorRef](testActors)
}

trait TestActorManager extends Actor {
     self.lifeCycle = Permanent
     self.faultHandler = OneForOneStrategy(List(classOf[Exception]), 5, 5000)
     val …
Run Code Online (Sandbox Code Playgroud)

scala akka

8
推荐指数
2
解决办法
1103
查看次数

标签 统计

akka ×1

scala ×1