如何在特定的时间限制内等待特定的时间,直到得到休息服务的响应

时间:2018-07-25 14:00:01

标签: spring spring-boot httpclient

在我的代码中,我正在调用一个外部Web服务,以使用HTTP Client Get请求获得响应。在此服务可能会延迟最多5分钟才能给出响应。所以我必须做下面的事情。 1.要设置请求超时(不知道怎么做) 2.致电服务,并将时间限制设置为可以等待响应的时间(以我为例,我希望将时间限制设置为5分钟)

任何人都可以建议我如何实现这两个目标。

谢谢

Sudheer

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法设置请求超时时间:

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30 * 1000).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();

要设置响应超时,您可以将调用包装在线程中并为该线程设置超时。

PFB下面的代码段:

Future<T> future = null;
future = pool.submit(new Callable<T>() {
    public T call() {
        return executeImpl(url);
    }   
}); 

try {
    return future.get(10, TimeUnit.SECONDS);
}   
catch (InterruptedException e) {
    log.warn("task interrupted", name);
}   
catch (ExecutionException e) {
    log.error(name + " execution exception", e); 
}   
catch (TimeoutException e) {
    log.debug("future timed out", name);
}