Apache HttpClient5中如何设置bufferSize参数?
HttpClient 5 自定义缓冲区大小配置方法
不需要继续沿用HttpClient 4版本,HttpClient 5完全支持配置缓冲区参数,只是API位置做了调整。
HttpClient 4.x中ConnectionConfig#setBufferSize配置的是底层Socket的收发缓冲区大小,在5.x版本中,这类Socket原生配置被统一收敛到SocketConfig类中管理,不再放在ConnectionConfig里,所以你在ConnectionConfig里找不到对应方法。
全局默认配置方式
通过setDefaultSocketConfig方法给客户端设置全局默认的Socket参数即可,示例代码:
int myBufferSize = 8 * 1024; // 替换为你需要的缓冲区大小 SocketConfig customSocketConfig = SocketConfig.custom() // 发送缓冲区大小,对应SO_SNDBUF .setSndBufSize(myBufferSize) // 接收缓冲区大小,对应SO_RCVBUF .setRcvBufSize(myBufferSize) .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultSocketConfig(customSocketConfig) .build();
单路由独立配置
如果需要针对特定目标地址单独设置缓冲区大小,可以在初始化PoolingHttpClientConnectionManager时,给对应路由绑定专属的SocketConfig,该配置优先级高于全局默认配置。
补充说明:HttpClient 5对配置分层做了重构,现在
ConnectionConfig仅负责HTTP协议层面的连接配置(比如连接超时、请求头大小限制、最大内容长度限制等),所有底层Socket IO相关的参数都统一放在SocketConfig中维护。
内容的提问来源于stack exchange,提问作者sweet_popcorn
相关产品推荐
相关产品推荐

