我正在进行休息请求以查询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请求中添加某种处理程序/侦听器,这样当我可以从作业服务器获取状态时我可以像通知用户那样进行某种处理。
有没有这样做的图书馆?
答案 0 :(得分:1)
您正在做的是,REST API不断轮询作业完成状态。你想要的是使它异步。因此,让您的驱动程序通过某个端点将作业完成状态发送回REST API。该终点将根据作业完成状态执行所需的任何操作。