使用restableHttpclient使用resttemplate进行连接超时设置

问题描述 投票:0回答:1

所以我读了这篇文章https://www.baeldung.com/httpclient-timeout,它说如果httpclient尝试连接的底层服务的DNS配置了多个IP,连接超时会增加自己的惩罚。

因此,如果我将连接超时设置为100毫秒,并且被叫服务DNS有5个IP映射到它,那么我假设最大连接超时为500毫秒,假设最后的IP是有效的。

有没有办法在这个连接超时上设置上限,无论底层服务拓扑是什么作为客户端,我将永远不知道它。

spring httpclient resttemplate
1个回答
0
投票

据我所知,你没有一个代码明智的案例来运行5个或更多的IP情况而不是好奇心。所以我的经验:

因为你使用的RestTemplate默认使用SimpleClientHttpRequestFactory。并且随着连接超时的定义:

连接超时是初始连接的超时时间;即完成TCP连接握手并连接到请求的服务器。

因此,就理论而言:无论底层服务拓扑如何,RestTemplate都会尝试根据连接超时值建立连接。

为了找出你的情况下的almost exact timeout,你必须运行一些延迟测试,打印restTemplate正在采取的时间差异来获得200 OK

此外,SimpleClientHttpRequestFactory内部使用HttpURLConnection,其默认超时为infinite(0 / -1)。

是的,在极少数情况下也观察到,除非Thread.interrupt()被明确地调用结束,否则连接会继续尝试。

因此,描述您的读取超时和连接超时值变得至关重要,这样您就可以将连接限制在您定义的限制之内。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.