HTTP 连接池配置

更新时间:

本节主要介绍V1.0 SDK 如何进行 HTTP 连接池配置。

V1.0 SDK 中通过 HttpClientConfig 在初始化 Client 阶段设置连接池设置,由于单 Client 的原因,多个云产品的 SDK 请求会共享一个连接池:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.HttpClientConfig;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
public class Sample {
    public static void main(String[] args) {
        // 创建DefaultAcsClient实例并初始化
        DefaultProfile profile = DefaultProfile.getProfile(
                // 地域ID
                "<region-id>",
                // 从环境变量获取RAM账号的AccessKey ID
                System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 从环境变量获取RAM账号的AccessKey ID
                System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

        /* 多个SDK client共享一个连接池,此处设置该连接池的参数,比如每个host的最大连接数,超时时间等 */
        HttpClientConfig clientConfig = HttpClientConfig.getDefault();
        clientConfig.setMaxRequestsPerHost(6);
        // 时间单位为毫秒
        clientConfig.setConnectionTimeoutMillis(30000L);
        clientConfig.setMaxIdleConnections(20);

        profile.setHttpClientConfig(clientConfig);
        IAcsClient client = new DefaultAcsClient(profile);
    }
}