目前我有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
是否已经完成。有可能吗?
答案 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
。