Comment puis-je réutiliser un HttpClient de connexion de manière efficace?

Je fais HTTP Postes très fréquemment (>= 1/s) à une API d'extrémité et je veux m'assurer que je suis en train de faire efficacement. Mon objectif est de réussir ou d'échouer dès que possible, surtout depuis que j'ai séparer le code pour les tentatives ont échoué Postes. Il y a une belle page de HttpClient conseils de performances, mais je ne suis pas sûr si de manière exhaustive les mettre en œuvre tous auront de réels avantages. Voici mon code maintenant:

public class Poster {
  private String url;
  //re-use our request
  private HttpClient client;
  //re-use our method
  private PostMethod method;

  public Poster(String url) {
    this.url = url;

    //Set up the request for reuse.
    HttpClientParams clientParams = new HttpClientParams();
    clientParams.setSoTimeout(1000);  //1 second timeout.
    this.client = new HttpClient(clientParams);
    //don't check for stale connections, since we want to be as fast as possible?
    //this.client.getParams().setParameter("http.connection.stalecheck", false);

    this.method = new PostMethod(this.url);
    //custom RetryHandler to prevent retry attempts
    HttpMethodRetryHandler myretryhandler = new HttpMethodRetryHandler() {
      public boolean retryMethod(final HttpMethod method, final IOException exception, int executionCount) {
        //For now, never retry
        return false;
      }
    };

    this.method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, myretryhandler);
  }

  protected boolean sendData(SensorData data) {
    NameValuePair[] payload = {
      //...
    };
    method.setRequestBody(payload);

    //Execute it and get the results.
    try {
      //Execute the POST method.
      client.executeMethod(method);
    } catch (IOException e) {
      //unable to POST, deal with consequences here
      method.releaseConnection();
      return false;
    }

    //don't release so that it can be reused?
    method.releaseConnection();

    return method.getStatusCode() == HttpStatus.SC_OK;
  }
}

Serait-il judicieux de désactiver la case à cocher pour rassis connexions? Dois-je être à la recherche à l'aide de la MultiThreadedConnectionManager? Bien sûr, le réel de l'étalonnage de l'aide, mais je voulais vérifier si mon code est sur la bonne voie en premier.

Il est ironique que j'ai obtenus à la Question Populaire badge (+de 1000 vues) malgré l'absence de réponses. Si vous avez quelques suggestions, répondre à cela pourrait être un bon moyen de gagner de la réputation. 😉
hc.apache.org/httpcomponents-client-ga/tutorial/html/...

OriginalL'auteur pr1001 | 2010-02-10