2016-08-11 3 views
0

現在、私はバッチ挿入を行うn人のワーカー・アクターを実行する主なアクターを含むrest-endpoint-api-playframeworkを持っています。それをやり遂げる過程で、私は挿入物の現在のプロセスを得たいと思っています.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が完了した場合、その後、私はちょうどそう私はcurrentProcessedItemの未来を返すmainActor ? CurrentProcessedItemを実行したい、処理が完了し返すだろうと期待したいです。

基本的に私はmainActor ? ProcessBatchが完了したかどうかを示すインジケータが必要です。出来ますか?

答えて

0

「お問い合わせください」と返信すると、Futureとなります。

val future = helloActor ? ProcessBatch 
future.onComplete { 
    case Success(result) => // Do stuff 
} 

しかし、私はむしろmainActorhelloActor ? ProcessBatchと「パイプ」mainActorに結果を実行したい:そのため、onCompleteあなたがやりたいことができます。

+0

最初のプロセスが終了していない間にエンドポイントに2回ヒットした場合はどうなりますか?それは別の俳優がそれをwouldntそれを産むでしょうか?進行中の俳優がいるかどうか確認する必要はありませんか?私がコードを編集した方法で、helloActorは実際にmainActorです。 – kenlz

関連する問題