SimpleClientHttpRequestFactory vs HttpComponentsClientHttpRequestFactory pour Http Request timeout avec RestTemplate?

Je suis en train de travailler sur un projet dans lequel j'ai besoin de faire une URL HTTP appel à mon serveur qui exécute le Service Restful qui retourne la réponse à la JSON String.

Ci-dessous mon code principal qui est l'aide de l'avenir et 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;
    }
}

Ci-dessous est mon Task classe qui implémente l' Callable interface et utilise le 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;
    }
}

Énoncé Du Problème:

Comme vous pouvez le voir ci-dessus, je suis en utilisant la méthode par défaut de l'exécution de l'URL à l'aide de RestTemplate qui permet de ne pas utiliser une Requête Http délai d'attente de sorte que les moyens en interne, c'est à l'aide de -1 comme le read et connection délai d'attente.

Maintenant ce que je cherche à faire, c'est que je veux mettre en place Http expiration du délai de Demande à l'aide de RestTemplate dans mon code ci-dessus de manière efficace. Et je ne suis pas sûr de la classe-je utiliser pour que je puisse voir HttpComponentsClientHttpRequestFactory et SimpleClientHttpRequestFactory donc ne sais pas lequel je dois utiliser?

Toute simple exemple de base sur mon code ci-dessus va m'aider à mieux comprendre comment régler les Http expiration du délai de Demande à l'aide de RestTemplate.

Et aussi mon Http Request timeout valeur doit être inférieure à l'avenir de la valeur timeout?

  • HttpComponentsClientHttpRequestFactory vs SimpleClientHttpRequestFactory. Lequel utiliser?
  • Mon Http Request timeout valeur doit être inférieure à l'avenir de la valeur timeout?

OriginalL'auteur AKIWEB | 2014-09-06