本文是精讲响应式WebClient第5篇,前篇的blog访问地址如下:
- 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法
- 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方法详解
- 精讲响应式WebClient第3篇-POST、DELETE、PUT方法使用
- 精讲响应式WebClient第4篇-文件上传与下载
本文来为大家介绍一下,当WebClient请求发生异常的时候,该如何处理。为了讲解异常处理,我们需要先制造出异常,所以我们先为大家介绍:请求超时时长的设置。
一、请求超时时长的设置
要想模拟超时异常,我们首先要知道超时时长的正常配置渠道是怎么样的。如下文代码所示:
ChannelOption.CONNECT_TIMEOUT_MILLIS
用来设置连接超时时长,单位是毫秒ReadTimeoutHandler(5000, TimeUnit.MILLISECONDS)
用来设置读数据超时时长,单位是毫秒WriteTimeoutHandler(5000, TimeUnit.MILLISECONDS)
用来设置写数据超时时长,单位是毫秒
//初始化一个WebClient
private WebClient getWebClient(){
TcpClient tcpClient = TcpClient
.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
.doOnConnected(connection -> {
connection.addHandlerLast(new ReadTimeoutHandler(5000, TimeUnit.MILLISECONDS));
connection.addHandlerLast(new WriteTimeoutHandler(5000, TimeUnit.MILLISECONDS));
});
return WebClient.builder()
.baseUrl("http://jsonplaceholder.typicode.com")
.clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)))
.build();
}
当我们把连接超时时长设置为5(毫秒)的时