CloseableHttpClient接近最优

时间:2016-09-05 17:53:23

标签: java http optimization apache-httpclient-4.x

我定义了自己的类RestClient,它类似于休息方法调用的接口。

RestClient类的一个对象,它只被实例化一次,并且对于不同的方法使用了多次。 (doGet() doPost()等。)

有两种可能的解决方案:

1

class RestClient {
   private CloseableHttpClient client;

   public void doGet(String URI){
      HttpGet request = new HttpGet(URI);
      try (CloseableHttpResponse resp = client.execute(request)) {

   }
}

2

class RestClient {

   public void doGet(String URI) {
      HttpGet request = new HttpGet(URI);
try(CloseableHttpClient client = createClient(); CloseableHttpResponse resp = client.execute(request)){
    } catch(Exception e){
    } finally { close(client);}

}

我的问题是:

拥有类型CloseableHttpClient的属性并在RestClient类构造函数中仅创建此客户端一次,或者每次调用其中一个方法时创建一个不同的客户端更好每次通话后关闭客户?

1 个答案:

答案 0 :(得分:2)

HttpClient实例的创建成本很高。即使不经常使用它们也应该重复使用。每次请求执行时创建一个新的HttpClient实例是HttpClient使用中最差的反模式。