当时公司为了让接入网关变的简单,于是就开发了一个client,然后给各个服务去使用。
有一次发送请求的时候,发现报timeout了,但实际上业务已经执行成功了。于是就去追代码,发现使用的尽然是hutool包的工具,那个真是糊涂呀 。
看代码发现没有指定timeout的参数就使用了默认参数 -1
因为使用jdk的URLConnection
hutool用的是JDK自带的URLConnection,这个是可以指定参数的。如果不指定参数,对于那些调用较为耗时的请求就会一直等待。
hutool调用存在的问题
基本要求
- 超时时间不设置,如果突然网络出现问题,就会一直卡在这。没有超时控制不行。
- 每次请求都建立连接,请求完成以后销毁连接。建立连接是很消耗资源的。
合理的要求 - 连接复用,要有连接池吧
- 请求拦截器中统一做点功能是可以的吧
- 要是还能异步就完美了
你需要的okhttp都有
https://square.github.io/okhttp/features/events/