I am working on a project in which I need to make a HTTP URL call to my server which is running Restful Service which returns back the response as a JSON String
.
Below is my main code which is using the future and callables:
public class TimeoutThreadExample {
private ExecutorService executor = Executors.newFixedThreadPool(10);
private RestTemplate restTemplate = new RestTemplate();
public String getData() {
Future<String> future = executor.submit(new Task(restTemplate));
String response = null;
try {
response = future.get(500, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return response;
}
}
Below is my Task
class which implements the Callable
interface and uses the RestTemplate
:
class Task implements Callable<String> {
private RestTemplate restTemplate;
public Task(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public String call() throws Exception {
String url = "some_url";
String response = restTemplate.getForObject(url, String.class);
return response;
}
}
Problem Statement:
As you can see above, I am using default way of executing the URL using RestTemplate
which doesn't use any Http Request timeout so that means internally it is using -1
as the read
and connection
timeout.
Now what I am looking to do is, I want to set up Http Request timeout using RestTemplate
in my above code efficiently. And I am not sure which class I need to use for that, I can see HttpComponentsClientHttpRequestFactory
and SimpleClientHttpRequestFactory
so not sure which one I need to use?
Any simple example basis on my above code will help me understand better on how to set the Http Request timeout using RestTemplate
.
And also does my Http Request timeout value should be less than future timeout value?
HttpComponentsClientHttpRequestFactory
vsSimpleClientHttpRequestFactory
. Which one to use?- Does my Http Request timeout value should be less than future timeout value?
requestFactory
in my above code base efficiently? I understand from your example how to use it but where do I fitrequestFactory
in my above code base since I am using DI to pass the RestTemplate. – Amasa