SoFunction
Updated on 2025-04-06

Various implementation methods for setting request response time in Java

introduction

In the development model of separation of front-end and back-end, when the front-end requests the back-end to obtain data, setting the response time (timeout time) reasonably is the key to improving system performance and user experience. This article will explore in-depth how to set the response time of requests in Java, covering a variety of technical stacks and scenarios, including native HTTP requests, Apache HttpClient, Spring RestTemplate, Spring WebClient and front-end JavaScript implementation methods. Through this article, you will understand how to flexibly configure timeouts in different scenarios to ensure efficient operation and stability of the system.

1. Set timeout using Java native HTTP request

If you use Java native HttpURLConnection to send HTTP requests, you can set the connection timeout and read timeout in the following ways:

import ;
import ;

public class HttpTimeoutExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("/api/data");
            HttpURLConnection connection = (HttpURLConnection) ();

            // Set connection timeout (unit: milliseconds)            (5000); // 5 seconds
            // Set the read timeout (unit: milliseconds)            (10000); // 10 seconds
            // Send a request            ("GET");
            int responseCode = ();
            ("Response Code: " + responseCode);

            // Process response data...        } catch (Exception e) {
            ();
        }
    }
}

Parameter description:

  • setConnectTimeout: Set the connection timeout time, that is, the maximum waiting time for establishing a connection.
  • setReadTimeout: Set the read timeout time, that is, the maximum waiting time for data reading from the server.

2. Set timeout using Apache HttpClient

Apache HttpClient is a powerful HTTP client library that supports more flexible configurations. Here is an example of setting a timeout:

Maven dependencies:

<dependency>
    <groupId>.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.1</version>
</dependency>

Code example:

import .;
import .;
import .;
import .;
import .;
import .;
import .;

import ;

public class HttpClientTimeoutExample {
    public static void main(String[] args) {
        try (CloseableHttpClient httpClient = ()
                .setConnectionTimeout((5, )) // Connection timeout                .setResponseTimeout((10, ))  // Response timeout                .build()) {

            HttpUriRequest request = new HttpGet("/api/data");
            try (CloseableHttpResponse response = (request)) {
                ("Response Code: " + ());
                String responseBody = (());
                ("Response Body: " + responseBody);
            }
        } catch (Exception e) {
            ();
        }
    }
}

Parameter description:

  • setConnectionTimeout: Set the connection timeout time.
  • setResponseTimeout: Set the response timeout time.

3. Set timeout using Spring RestTemplate

If you are using Spring frameworkRestTemplate, can be configuredRequestFactoryTo set the timeout time.

Code example:

import ;
import ;

public class RestTemplateTimeoutExample {
    public static void main(String[] args) {
        // Create RequestFactory and set the timeout        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        (5000); // Connection timeout 5 seconds        (10000);   // Read timeout 10 seconds
        // Create RestTemplate        RestTemplate restTemplate = new RestTemplate(factory);

        // Send a request        String url = "/api/data";
        String response = (url, );
        ("Response: " + response);
    }
}

Parameter description:

  • setConnectTimeout: Set the connection timeout time.
  • setReadTimeout: Set the read timeout time.

4. Set timeout using Spring WebClient (responsive programming)

If you are using Spring WebFluxWebClient, can be configuredHttpClientTo set the timeout time.

Code example:

import ;
import ;
import ;

public class WebClientTimeoutExample {
    public static void main(String[] args) {
        // Configure HttpClient        HttpClient httpClient = ()
                .responseTimeout((10)); // Response timeout 10 seconds
        // Create a WebClient        WebClient webClient = ()
                .clientConnector(new ReactorClientHttpConnector(httpClient))
                .build();

        // Send a request        String url = "/api/data";
        String response = ()
                .uri(url)
                .retrieve()
                .bodyToMono()
                .block(); // Blocking to get results        ("Response: " + response);
    }
}

Parameter description:

  • responseTimeout: Set the response timeout time.

5. Front-end setting timeout (JavaScript example)

If you use JavaScript to send requests on the front end, you can usefetchorXMLHttpRequestSet the timeout time.

Set timeout using fetch:

const controller = new AbortController();
const signal = ;

// Set timeoutsetTimeout(() =&gt; (), 10000); // 10 seconds timeout
fetch('/api/data', { signal })
    .then(response =&gt; ())
    .then(data =&gt; (data))
    .catch(err =&gt; ('Request failed:', err));

Set the timeout using XMLHttpRequest:

const xhr = new XMLHttpRequest();
('GET', '/api/data', true);

// Set timeout = 10000; // 10 seconds timeout
 = function () {
    if ( === 200) {
        ();
    }
};
 = function () {
    ('Request timed out');
};
();

6. Summary

Setting the response time (timeout time) of a request in Java can be achieved in a number of ways, depending on the technology stack you are using:

  • useHttpURLConnectionWhen, throughsetConnectTimeoutandsetReadTimeoutSet timeout.
  • When using Apache HttpClient,setConnectionTimeoutandsetResponseTimeoutSet timeout.
  • Using SpringRestTemplateWhen, through configurationRequestFactorySet timeout.
  • Using Spring WebFluxWebClientWhen, through configurationHttpClientSet timeout.
  • In front-end JavaScript, you can usefetchorXMLHttpRequestSet timeout.

Reasonably setting the timeout time can improve the robustness of the system and user experience, and avoid long-term hangs of requests due to network problems.

This is the end of this article about the various implementation methods of setting request response time in Java. For more related content on Java setting request response time, please search for my previous article or continue browsing the related articles below. I hope everyone will support me in the future!