Skip to content

Commit

Permalink
Issue #140 feat: Use Apache HttpClient connection pool for Http requests
Browse files Browse the repository at this point in the history
  • Loading branch information
Anand committed May 8, 2018
1 parent b003840 commit 2348df5
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 1 deletion.
5 changes: 5 additions & 0 deletions java/opensaber-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
<dependency>
<groupId>io.open-saber</groupId>
<artifactId>pojos</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package io.opensaber.registry.client;

import io.opensaber.pojos.Response;
import io.opensaber.registry.config.Configuration;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
Expand All @@ -20,7 +22,11 @@ public static HttpClient getInstance() {
private RestTemplate restTemplate;

private HttpClient() {
restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(Configuration.HTTP_CONNECT_TIMEOUT);
requestFactory.setReadTimeout(Configuration.HTTP_READ_TIMEOUT);
requestFactory.setConnectionRequestTimeout(Configuration.HTTP_CONNECTION_REQUEST_TIMEOUT);
restTemplate = new RestTemplate(requestFactory);
}

public ResponseEntity<Response> post(String url, HttpHeaders headers, String payload) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import io.opensaber.registry.client.data.RequestData;
import io.opensaber.registry.client.data.ResponseData;
import io.opensaber.registry.config.Configuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;

Expand All @@ -19,6 +21,8 @@

public class RestClient implements Client<String> {

private static Logger logger = LoggerFactory.getLogger(RestClient.class);

private HttpClient httpClient;
private static Type mapType = new TypeToken<Map<String, Object>>(){}.getType();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,7 @@ private Config load() {
public static final String HOST = Configuration.instance.config.getString("registry.service.host");
public static final Integer PORT = Configuration.instance.config.getInt("registry.service.port");
public static final String BASE_URL = Configuration.instance.config.getString("registry.service.baseUrl");
public static final Integer HTTP_CONNECT_TIMEOUT = Configuration.instance.config.getInt("registry.http.connect-timeout");
public static final Integer HTTP_READ_TIMEOUT = Configuration.instance.config.getInt("registry.http.read-timeout");
public static final Integer HTTP_CONNECTION_REQUEST_TIMEOUT = Configuration.instance.config.getInt("registry.http.connection-request-timeout");
}
20 changes: 20 additions & 0 deletions java/opensaber-client/src/main/resources/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@ opensaber-client {
port = 8080
baseUrl = "http://localhost:8080/"
}

# Values in milliseconds
http {
# connection timeout for underlying httpclient
connect-timeout = 10000
# socket read timeout for underlying httpclient
read-timeout = 10000
# connection request timeout from connection manager
connection-request-timeout = 10000
}
}

staging {
Expand All @@ -27,6 +37,16 @@ opensaber-client {
port = 8080
baseUrl = "http://localhost:8080/"
}

# Values in milliseconds
http {
# connection timeout for underlying httpclient
connect-timeout = 10000
# socket read timeout for underlying httpclient
read-timeout = 10000
# connection request timeout from connection manager
connection-request-timeout = 10000
}
}
}
}

0 comments on commit 2348df5

Please sign in to comment.