50
50
public class HttpClientFactory {
51
51
52
52
private final CloseableHttpClient httpClient ;
53
- private final int TIMEOUT_THREE_HOURS = (int ) SECONDS .toMillis (60 * 60 * 3 );
53
+ private static final int TIMEOUT_THREE_HOURS = (int ) SECONDS .toMillis (60 * 60 * 3 );
54
+ private static final int TIMEOUT_TWO_MINUTES = (int ) SECONDS .toMillis (60 * 2 );
54
55
private final HttpClientConnectionManager gridClientConnectionManager =
55
56
getClientConnectionManager ();
56
57
57
58
public HttpClientFactory () {
58
- httpClient = createHttpClient (null );
59
+ this (TIMEOUT_TWO_MINUTES , TIMEOUT_THREE_HOURS );
60
+ }
61
+
62
+ public HttpClientFactory (int connectionTimeout , int socketTimeout ) {
63
+ httpClient = createHttpClient (null , connectionTimeout , socketTimeout );
59
64
}
60
65
61
66
private static HttpClientConnectionManager getClientConnectionManager () {
@@ -77,12 +82,25 @@ public HttpClient getHttpClient() {
77
82
}
78
83
79
84
public CloseableHttpClient createHttpClient (Credentials credentials ) {
85
+ return createHttpClient (credentials , TIMEOUT_TWO_MINUTES , TIMEOUT_THREE_HOURS );
86
+ }
87
+
88
+ public CloseableHttpClient createHttpClient (Credentials credentials , int connectionTimeout , int socketTimeout ) {
89
+ if (connectionTimeout <= 0 ) {
90
+ throw new IllegalArgumentException ("connection timeout must be > 0" );
91
+ }
92
+ if (socketTimeout <= 0 ) {
93
+ throw new IllegalArgumentException ("socket timeout must be > 0" );
94
+ }
95
+
96
+ SocketConfig socketConfig = createSocketConfig (socketTimeout );
97
+ RequestConfig requestConfig = createRequestConfig (connectionTimeout , socketTimeout );
98
+
80
99
HttpClientBuilder builder = HttpClientBuilder .create ()
81
100
.setConnectionManager (getClientConnectionManager ())
82
- .setDefaultSocketConfig (createSocketConfig ())
83
- .setDefaultSocketConfig (createSocketConfig ())
84
- .setRoutePlanner (createRoutePlanner ())
85
- .setDefaultRequestConfig (createRequestConfig ());
101
+ .setDefaultSocketConfig (createSocketConfig (socketTimeout ))
102
+ .setDefaultRequestConfig (createRequestConfig (connectionTimeout , socketTimeout ))
103
+ .setRoutePlanner (createRoutePlanner ());
86
104
87
105
if (credentials != null ) {
88
106
CredentialsProvider provider = new BasicCredentialsProvider ();
@@ -93,17 +111,11 @@ public CloseableHttpClient createHttpClient(Credentials credentials) {
93
111
return builder .build ();
94
112
}
95
113
96
- public HttpClient getGridHttpClient (int connection_timeout , int socket_timeout ) {
114
+ public HttpClient getGridHttpClient (int connectionTimeout , int socketTimeout ) {
97
115
gridClientConnectionManager .closeIdleConnections (100 , MILLISECONDS );
98
116
99
- SocketConfig socketConfig = SocketConfig .copy (createSocketConfig ())
100
- .setSoTimeout (socket_timeout > 0 ? socket_timeout : TIMEOUT_THREE_HOURS )
101
- .build ();
102
-
103
- RequestConfig requestConfig = RequestConfig .copy (createRequestConfig ())
104
- .setConnectTimeout (connection_timeout > 0 ? connection_timeout : 120 * 1000 )
105
- .setSocketTimeout (socket_timeout > 0 ? socket_timeout : TIMEOUT_THREE_HOURS )
106
- .build ();
117
+ SocketConfig socketConfig = createSocketConfig (socketTimeout );
118
+ RequestConfig requestConfig = createRequestConfig (connectionTimeout , socketTimeout );
107
119
108
120
return HttpClientBuilder .create ()
109
121
.setConnectionManager (gridClientConnectionManager )
@@ -114,18 +126,18 @@ public HttpClient getGridHttpClient(int connection_timeout, int socket_timeout)
114
126
.build ();
115
127
}
116
128
117
- private SocketConfig createSocketConfig () {
129
+ private SocketConfig createSocketConfig (int socketTimeout ) {
118
130
return SocketConfig .custom ()
119
131
.setSoReuseAddress (true )
120
- .setSoTimeout (TIMEOUT_THREE_HOURS )
132
+ .setSoTimeout (socketTimeout )
121
133
.build ();
122
134
}
123
135
124
- private RequestConfig createRequestConfig () {
136
+ private RequestConfig createRequestConfig (int connectionTimeout , int socketTimeout ) {
125
137
return RequestConfig .custom ()
126
138
.setStaleConnectionCheckEnabled (true )
127
- .setConnectTimeout (120 * 1000 )
128
- .setSocketTimeout (TIMEOUT_THREE_HOURS )
139
+ .setConnectTimeout (connectionTimeout )
140
+ .setSocketTimeout (socketTimeout )
129
141
.build ();
130
142
}
131
143
0 commit comments