
com.baidu.haotianjing.core.http.HttpClientConfig Maven / Gradle / Ivy
package com.baidu.haotianjing.core.http;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* HTTP请求相关配置
*/
public class HttpClientConfig {
public static final String DEFAULT_PROTOCOL = "http";
public static final int DEFAULT_SOCKET_TIMEOUT_MILLIS = 500;
public static final long DEFAULT_MAX_IDLE_TIME_MILLIS = 60 * 1000L;
public static final long DEFAULT_CONNECTION_KEEP_ALIVE_MILLIS = 2 * 60 * 1000L;
public static final long DEFAULT_CONNECTION_REQUEST_TIMEOUT_MILLIS = 500L;
public static final long DEFAULT_CONNECTION_TIMEOUT_MILLIS = 1000L;
public static final long DEFAULT_RESPONSE_TIMEOUT_MILLIS = 500L;
public static final int DEFAULT_MAX_CONNECTION_COUNT = 100;
public static final int DEFAULT_MAX_CONNECTION_COUNT_PER_ROUTE = 100;
/**
* 协议
*/
private String protocol = DEFAULT_PROTOCOL;
/**
* 默认的 socket I/O 阻塞超时时间
*/
private int socketTimeoutMillis = DEFAULT_SOCKET_TIMEOUT_MILLIS;
/**
* 连接的最长空闲时间。单位:毫秒
*/
private long maxIdleTimeMillis = DEFAULT_MAX_IDLE_TIME_MILLIS;
/**
* 从连接池获取连接的超时时间。0表示无超时限制。单位:毫秒
*/
private long connectionRequestTimeoutMillis = DEFAULT_CONNECTION_REQUEST_TIMEOUT_MILLIS;
/**
* 默认的连接保持时间。单位:毫秒
*/
private long connectionKeepAliveMillis = DEFAULT_CONNECTION_KEEP_ALIVE_MILLIS;
/**
* 建立一个新连接的超时时间。单位:毫秒
*/
private long connectionTimeoutMillis = DEFAULT_CONNECTION_TIMEOUT_MILLIS;
/**
* 等待服务器返回响应的超时时间。单位:毫秒
*/
private long responseTimeoutMillis = DEFAULT_RESPONSE_TIMEOUT_MILLIS;
/**
* 同一时刻最大连接数
*/
private int maxConnectionCount = DEFAULT_MAX_CONNECTION_COUNT;
/**
* 针对每个域名的同一时刻最大连接数默认值
*/
private int maxConnectionCountPerRoute = DEFAULT_MAX_CONNECTION_COUNT_PER_ROUTE;
/**
* 协议。默认值:{@link #DEFAULT_PROTOCOL}
*/
public HttpClientConfig protocol(String protocol) {
this.protocol = protocol;
return this;
}
public String protocol() {
return protocol;
}
/**
* 默认的 socket I/O 阻塞超时时间。单位:毫秒。默认值:{@link #DEFAULT_SOCKET_TIMEOUT_MILLIS}
*/
public HttpClientConfig socketTimeoutMillis(int socketTimeoutMillis) {
this.socketTimeoutMillis = socketTimeoutMillis;
return this;
}
public int socketTimeoutMillis() {
return socketTimeoutMillis;
}
/**
* 连接的最长空闲时间。单位:毫秒。默认值:{@link #DEFAULT_MAX_IDLE_TIME_MILLIS}
*/
public HttpClientConfig maxIdleTimeMillis(long maxIdleTimeMillis) {
this.maxIdleTimeMillis = maxIdleTimeMillis;
return this;
}
public long maxIdleTimeMillis() {
return maxIdleTimeMillis;
}
/**
* 从连接池获取连接的超时时间。0表示无超时限制。单位:毫秒。默认值:{@link #DEFAULT_CONNECTION_REQUEST_TIMEOUT_MILLIS}
*/
public HttpClientConfig connectionRequestTimeoutMillis(long connectionRequestTimeoutMillis) {
this.connectionRequestTimeoutMillis = connectionRequestTimeoutMillis;
return this;
}
public long connectionRequestTimeoutMillis() {
return connectionRequestTimeoutMillis;
}
/**
* 默认的连接保持时间。单位:毫秒。默认值:{@link #DEFAULT_CONNECTION_KEEP_ALIVE_MILLIS}
*/
public HttpClientConfig connectionKeepAliveMillis(long connectionKeepAliveMillis) {
this.connectionKeepAliveMillis = connectionKeepAliveMillis;
return this;
}
public long connectionKeepAliveMillis() {
return connectionKeepAliveMillis;
}
/**
* 建立一个新连接的超时时间。单位:毫秒。默认值:{@link #DEFAULT_CONNECTION_TIMEOUT_MILLIS}
*/
public HttpClientConfig connectionTimeoutMillis(long connectionTimeoutMillis) {
this.connectionTimeoutMillis = connectionTimeoutMillis;
return this;
}
public long connectionTimeoutMillis() {
return connectionTimeoutMillis;
}
/**
* 等待服务器返回响应的超时时间。单位:毫秒。默认值:1秒
*/
public HttpClientConfig responseTimeoutMillis(long responseTimeoutMillis) {
this.responseTimeoutMillis = responseTimeoutMillis;
return this;
}
public long responseTimeoutMillis() {
return responseTimeoutMillis;
}
/**
* 同一时刻最大连接数。默认值:{@link #DEFAULT_MAX_CONNECTION_COUNT}
*/
public HttpClientConfig maxConnectionCount(int maxConnectionCount) {
this.maxConnectionCount = maxConnectionCount;
return this;
}
public int maxConnectionCount() {
return maxConnectionCount;
}
/**
* 针对每个域名的同一时刻最大连接数默认值。默认值:{@link #DEFAULT_MAX_CONNECTION_COUNT_PER_ROUTE}
*/
public HttpClientConfig maxConnectionCountPerRoute(int maxConnectionCountPerRoute) {
this.maxConnectionCountPerRoute = maxConnectionCountPerRoute;
return this;
}
public int maxConnectionCountPerRoute() {
return maxConnectionCountPerRoute;
}
@Override
public String toString() {
return ReflectionToStringBuilder.
toString(this, ToStringStyle.MULTI_LINE_STYLE, true, true);
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public void setSocketTimeoutMillis(int socketTimeoutMillis) {
this.socketTimeoutMillis = socketTimeoutMillis;
}
public void setMaxIdleTimeMillis(long maxIdleTimeMillis) {
this.maxIdleTimeMillis = maxIdleTimeMillis;
}
public void setConnectionRequestTimeoutMillis(long connectionRequestTimeoutMillis) {
this.connectionRequestTimeoutMillis = connectionRequestTimeoutMillis;
}
public void setConnectionKeepAliveMillis(long connectionKeepAliveMillis) {
this.connectionKeepAliveMillis = connectionKeepAliveMillis;
}
public void setConnectionTimeoutMillis(long connectionTimeoutMillis) {
this.connectionTimeoutMillis = connectionTimeoutMillis;
}
public void setResponseTimeoutMillis(long responseTimeoutMillis) {
this.responseTimeoutMillis = responseTimeoutMillis;
}
public void setMaxConnectionCount(int maxConnectionCount) {
this.maxConnectionCount = maxConnectionCount;
}
public void setMaxConnectionCountPerRoute(int maxConnectionCountPerRoute) {
this.maxConnectionCountPerRoute = maxConnectionCountPerRoute;
}
public static HttpClientConfig defaultConfig() {
return new HttpClientConfig();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy