查找演员姓名Akka Scala

时间:2016-08-11 05:32:08

标签: scala playframework akka

目前我有rest-endpoint-api-play框架,其中包含主要的actor以运行n个工作者进行批量插入。在这样做的过程中,我喜欢获得插入的当前过程,比方说100/1000。为了做到这一点,显然我会让演员向发件人报告该过程的状态。

class Application (implicit inj : Injector) extends Controller with Injectable {
  implicit val timeout = Timeout(5 seconds)
  val mainActor = system.actorOf(RoundRobinPool(100).props(Props(new SupervisorActor(0))), name = "helloactor")

  val future = mainActor ? ProcessBatch  

  val workerFuture = mainActor ? CurrentProcessedItem
  result = Await.result(workerFuture, timeout.duration).asInstanceOf[String] 

  Ok(Json.obj("return"->result.toString))  
}

以上,我希望如果helloActor ? ProcessBatch已完成,那么我只是返回完成流程,否则我会运行返回的mainActor ? CurrentProcessedItem currentProcessedItem的未来。

所以基本上我需要一个指示mainActor ? ProcessBatch是否已经完成。有可能吗?

1 个答案:

答案 0 :(得分:0)

"向"返回$output = array_filter($arrayresult, function($a) use ($useduser) { return !in_array($a[0], $useduser); }); 。因此,Future你可以做任何你想做的事情:

onComplete

但是,我宁愿在val future = helloActor ? ProcessBatch future.onComplete { case Success(result) => // Do stuff } 和" pipe"中运行helloActor ? ProcessBatch结果为mainActor