2016-12-22 100 views
1

ジョブのステータスを取得するために、スパーク・ジョブ・サーバに問い合わせる休止リクエストを作成しています。コードは以下のようになります。リスナは、スパーク・ジョブ・サーバからジョブ・ステータスを取得します。

private Future<JobResult> getJobResultFuture(String jobId) { 
     ExecutorService executorService = Executors.newSingleThreadExecutor(); 
     Future<JobResult> resultFuture = executorService.submit(() -> { 
      while (true) { 
       JobResult jobResponse = getJobResponse(jobController.getStatus(jobId)); 
       if (jobResponse.isJobComplete()) { 
        return jobResponse; 
       } 
       Thread.sleep(RESPONSE_RETRY_TIME); 
      } 
     }); 
     return resultFuture; 
    } 

次のように私は、ジョブサーバに要求を作っています:

public String getStatus(String jobId) { 
     WebResource resource = CLIENT.resource(jobServerURL() + "/jobs/" + jobId); 
     return resource.type(MediaType.TEXT_PLAIN).get(String.class); 
    } 

をしかし、私は、これはそれを行うための正しい方法であると感じていない、私はちょうど必要どのように私は何らかのハンドラ/リスナをWebリクエストに追加して、ジョブサーバからステータスを返すことができ、ユーザに通知するような何らかの処理を実行できるようにする方法を知っています。

これを行うライブラリはありますか?

答えて

1

あなたがしているのは、REST APIがジョブの完了ステータスを継続的にポーリングすることです。あなたが望むのは、それを非同期にすることです。そのため、運転手がジョブの終了ステータスをREST APIにいくつかのエンドポイント経由で送り返すようにしてください。このエンドポイントは、ジョブの完了ステータスに基づいて必要な処理を行います。

関連する問題