Saltar al contenido

SimpleClientHttpRequestFactory vs HttpComponentsClientHttpRequestFactory para el tiempo de espera de solicitud Http con RestTemplate?

Solución:

Por defecto, RestTemplate usa SimpleClientHttpRequestFactory que depende de la configuración predeterminada de HttpURLConnection.

Puede configurarlos utilizando los siguientes atributos:

-Dsun.net.client.defaultConnectTimeout=TimeoutInMiliSec 
-Dsun.net.client.defaultReadTimeout=TimeoutInMiliSec 

Si quieres usar HttpComponentsClientHttpRequestFactory – tiene una configuración de agrupación de conexiones que SimpleClientHttpRequestFactory no tiene.

Un código de muestra para usar HttpComponentsClientHttpRequestFactory:

public class TimeoutThreadExample {

    private ExecutorService executor = Executors.newFixedThreadPool(10);
    private static final RestTemplate restTemplate = createRestTemplate();

    private static RestTemplate createRestTemplate(){
       HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
       requestFactory.setReadTimeout(READ_TIME_OUT);
       requestFactory.setConnectTimeout(CONNECTION_TIME_OUT);
       return new RestTemplate(requestFactory);
     }

    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;
    }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *