2016-12-22 9 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); 
    } 

, но я не считаю, что это правильный способ сделать это, мне просто нужно знать, как я могу добавить какого-либо обработчика/слушателя в веб-запрос, чтобы когда я могу получить статус с сервера задания, и я могу выполнять некоторую обработку, например, уведомлять пользователя.

есть ли библиотека, которая делает это?

ответ

1

Что вы делаете, REST API постоянно проводит опрос о статусе завершения задания. Вы хотите сделать его асинхронным. Таким образом, ваш драйвер отправит статус завершения работы обратно в REST API через некоторую конечную точку. Этот конечный пункт будет делать все, что ему нужно, в зависимости от статуса завершения работы.

 Смежные вопросы

  • Нет связанных вопросов^_^