小编Ank*_*iya的帖子

间隔一段时间后调用 API 时首次出现连接重置异常

我们正在对一个 API 进行后调用,当我们在一段时间间隔后开始调用这个 API 时(在我们的例子中大多数时间是 10 分钟,如果间隔是 5 分钟,我们很少会得到),我们在第一次尝试时会遇到连接重置异常,那么其余的立即调用工作正常,但是如果调用此 API 时有 10 分钟的间隔然后再次调用,我们会在该间隔之后的第一次调用中遇到此类异常。我们使用 Java spring-boot Resttamplate 进行 API 调用并使用 Apache httpclient-4.5.2

阿帕奇日志 "[read] I/O error: Read timed out"

Java日志 Connection reset; nested exception is java.net.SocketException: Connection reset

重新标记配置

@Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory());
        return restTemplate;
    }

@Bean
    public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
        HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        clientHttpRequestFactory.setHttpClient(httpClient());
        return clientHttpRequestFactory;
    }

@Bean
    public CloseableHttpClient httpClient() {
        RequestConfig requestConfig = RequestConfig.custom()
            .setConnectionRequestTimeout(180000)
            .setConnectTimeout(180000)
            .setSocketTimeout(180000).build();

        return HttpClients.custom()
            .setDefaultRequestConfig(requestConfig) …
Run Code Online (Sandbox Code Playgroud)

java spring connection-pooling http spring-boot

5
推荐指数
1
解决办法
2796
查看次数

标签 统计

connection-pooling ×1

http ×1

java ×1

spring ×1

spring-boot ×1