1

我正在发出休息请求以查询 Spark 作业服务器以获取作业的状态。代码如下所示:

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 请求添加某种处理程序/侦听器,以便当我可以从作业服务器获取状态并且我可以执行一些类似于通知用户的处理方式。

有没有这样做的图书馆?

4

1 回答 1

1

您正在做的是,REST API 不断轮询作业完成状态。你想要的是让它异步。因此,让您的驱动程序通过某个端点将作业完成状态发送回 REST API。这个端点将根据作业完成状态做任何它需要的事情。

于 2017-01-12T06:09:36.953 回答