在Spring中,可以通过使用RestTemplate
或WebClient
来设置单个接口的超时。以下是两种方法的示例:
RestTemplate
设置超时:// 创建一个带有连接和读取超时时间的HttpComponentsClientHttpRequestFactory
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setConnectTimeout(5000); // 设置连接超时时间为5000毫秒
factory.setReadTimeout(5000); // 设置读取超时时间为5000毫秒
// 创建RestTemplate并设置请求工厂
RestTemplate restTemplate = new RestTemplate(factory);
// 发起HTTP请求
String url = "http://example.com/api/endpoint";
String response = restTemplate.getForObject(url, String.class);
WebClient
设置超时:// 创建一个带有连接和读取超时时间的HttpClient
HttpClient httpClient = HttpClient.create()
.tcpConfiguration(tcpClient ->
tcpClient.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000) // 设置连接超时时间为5000毫秒
.doOnConnected(conn -> conn
.addHandlerLast(new ReadTimeoutHandler(5)))); // 设置读取超时时间为5秒
// 创建WebClient并设置HTTP客户端
WebClient webClient = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
// 发起HTTP请求
String url = "http://example.com/api/endpoint";
Mono<String> response = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class);
这两种方法都可以用来设置单个接口的超时时间。可以根据具体需求选择其中一种方法来实现。