All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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