Skip to content

Commit

Permalink
opti: custom ConnectionManager for build httpClient
Browse files Browse the repository at this point in the history
  • Loading branch information
tangcent committed Apr 14, 2021
1 parent 7cf5f19 commit 492f32d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.itangcent.common.spi.SpiUtils
import com.itangcent.common.utils.notNullOrEmpty
import org.apache.http.HttpEntity
import org.apache.http.NameValuePair
import org.apache.http.client.config.CookieSpecs
import org.apache.http.client.config.RequestConfig
import org.apache.http.client.entity.UrlEncodedFormEntity
import org.apache.http.client.methods.RequestBuilder
Expand All @@ -18,6 +19,7 @@ import org.apache.http.entity.StringEntity
import org.apache.http.entity.mime.MultipartEntityBuilder
import org.apache.http.impl.client.BasicCookieStore
import org.apache.http.impl.client.HttpClients
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager
import org.apache.http.impl.cookie.BasicClientCookie
import org.apache.http.impl.cookie.BasicClientCookie2
import org.apache.http.message.BasicNameValuePair
Expand All @@ -40,14 +42,19 @@ open class ApacheHttpClient : HttpClient {
this.apacheCookieStore = ApacheCookieStore(basicCookieStore)
this.httpClientContext!!.cookieStore = basicCookieStore
this.httpClient = HttpClients.custom()
.setConnectionManager(PoolingHttpClientConnectionManager().also {
it.maxTotal = 50
it.defaultMaxPerRoute = 20
})
.setDefaultSocketConfig(SocketConfig.custom()
.setSoTimeout(30 * 1000)
.build())
.setDefaultRequestConfig(RequestConfig.custom()
.setConnectTimeout(30 * 1000)
.setConnectionRequestTimeout(30 * 1000)
.setSocketTimeout(30 * 1000)
.build()).build()
.setCookieSpec(CookieSpecs.STANDARD).build())
.build()
}

constructor(httpClient: org.apache.http.client.HttpClient) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import org.apache.http.client.config.CookieSpecs
import org.apache.http.client.config.RequestConfig
import org.apache.http.config.SocketConfig
import org.apache.http.impl.client.HttpClients
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager

@Singleton
class ConfigurableHttpClientProvider : AbstractHttpClientProvider() {
Expand All @@ -33,15 +34,18 @@ class ConfigurableHttpClientProvider : AbstractHttpClientProvider() {
val config = readHttpConfig()

httpClientBuilder
.setConnectionManager(PoolingHttpClientConnectionManager().also {
it.maxTotal = 50
it.defaultMaxPerRoute = 20
})
.setDefaultSocketConfig(SocketConfig.custom()
.setSoTimeout(config.timeOut.toMill())
.build())
.setDefaultRequestConfig(RequestConfig.custom()
.setConnectTimeout(config.timeOut.toMill())
.setConnectionRequestTimeout(config.timeOut.toMill())
.setSocketTimeout(config.timeOut.toMill())
.build())
.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build())
.setCookieSpec(CookieSpecs.STANDARD).build())

return HttpClientWrapper(ApacheHttpClient(httpClientBuilder.build()))
}
Expand Down

0 comments on commit 492f32d

Please sign in to comment.