2016-12-22 82 views
1

我正在發出其他請求來查詢Spark Job Server以獲取作業的狀態。代碼如下所示:監聽器從Spark Job Server獲取作業狀態

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。根據工作完成狀態,該終點將做任何需要的事情。

相關問題