10 秒后 HttpClient 连接超时

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

我实现了一个自定义的 CloseableHttpClient,如下所示:

        private WebServiceMessageSender createWebServiceMessageSender() {
            HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();

            RequestConfig config = RequestConfig.custom()
                    .setSocketTimeout(30_000)
                    .setConnectTimeout(30_000)
                    .setConnectionRequestTimeout(30_000)
                    .build();

            SocketConfig socketConfig = SocketConfig.custom()
                    .setSoTimeout(4000)
                    .build();

            CloseableHttpClient httpClient = HttpClientBuilder.create()
                    .addInterceptorFirst(new HttpComponentsMessageSender.RemoveSoapHeadersInterceptor())
                    .setDefaultRequestConfig(config)
                    .setDefaultSocketConfig(socketConfig)
                    .disableAutomaticRetries()
                    .build();

            httpComponentsMessageSender.setHttpClient(httpClient);
            return httpComponentsMessageSender;
        }

我将此方法作为 setMessageSender 注入 WebServiceTemplate。

问题是10秒后接收连接超时(不是读取超时!),不是我上面配置的(4000毫秒)。不知道为什么这个webservice在指定的时间没有执行超时,而是等了10秒。有没有人有类似的问题?

依赖项:

  • Spring-Boot:2.7.x

  • spring-ws-core:3.1.3

  • http客户端:4.5.13

我正在 81 端口上调用 google.com

java spring-boot apache-httpclient-4.x
1个回答
0
投票

10s 连接超时是 Istio MeshConfig 中的默认值 connectTimeout 值 https://istio.io/v1.12/docs/reference/config/istio.mesh.v1alpha1/

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