本地使用okhttp3发送请求,最多只能发5个/64个请求的限制问题

文章目录

  • 一丶问题
  • 二丶原因
  • 三、解决方案


一丶问题

我个人的需求及业务场景描述起来比较麻烦,参考价值不高,不多赘述。

问题就是本地发送请求数量分别达到5个,64个的时候,后续的请求全部超时失败。

二丶原因

经过公司各位大佬的协助,最后定位问题:
本地使用okhttp3发送请求,最多只能发5个/64个请求的限制问题_第1张图片
在okhttp3中,Dispatcher对象定义了两个变量:
maxRequest=64
maxRequestPerHost=5
看到这里懂的都懂~~

这里去简单查了一下
maxRequestPerHost是对单个IP+端口的限制
maxRequest这个就是所有总数的最大上限
(个人理解~~建议自行百度)

三、解决方案

同样也是发现问题的开发大佬,给我解决了这个问题,致谢!

方案:创建一个自己的Dispatcher对象,不使用默认的Dispatcher,这样就可以自己设定maxRequestPerHostmaxRequest的上限值。

static Dispatcher dispatcher = new Dispatcher();
   static {
       //自定义上限
       dispatcher.setMaxRequests(3000000);
       //自定义上限
       dispatcher.setMaxRequestsPerHost(1000000);
   }
   static OkHttpClient client = new OkHttpClient.Builder().dispatcher(dispatcher).build();

我的okhttp3版本:

<dependency>
	<groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.14.9</version>
</dependency>

我很菜,希望不要误导你的思路。

转发请附带原文链接~~

你可能感兴趣的:(疑难杂症,java,http)