spring webClient配置及使用简单代码示例
import com.zty.common.util.WebUtils;
import io.netty.channel.ChannelOption;
import io.netty.handler.timeout.ReadTimeoutHandler;
import io.netty.handler.timeout.WriteTimeoutHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;
import reactor.netty.resources.ConnectionProvider;
import java.time.Duration;
/**
* WebClient配置
* @author zty
*/
@Slf4j
@Configuration
public class WebClientConfig {
@Bean
public WebClient webClient(){
//配置固定大小连接池
ConnectionProvider provider = ConnectionProvider
.builder("custom")
// 等待超时时间
.pendingAcquireTimeout(Duration.ofSeconds(10))
// 最大连接数
.maxConnections(200)
// 最大空闲时间
.maxIdleTime(Duration.ofSeconds(5))
// 最大等待连接数量
.pendingAcquireMaxCount(-1)
.build();
/**
* doOnBind 当服务器channel即将被绑定的时候调用。
* doOnBound 当服务器channel已经被绑定的时候调用。
* doOnChannelInit 当channel初始化的时候被调用。
* doOnConnection 当一个远程客户端连接上的时候被调用。
* doOnUnbound 当服务器channel解绑的时候被调用。
*/
HttpClient httpClient = HttpClient.create(provider)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 6000)
.option(ChannelOption.SO_KEEPALIVE, true)
.responseTimeout(Duration.ofSeconds(6))
.keepAlive(true)
//连接成功
.doOnConnected(connection -> connection.addHandlerLast(new ReadTimeoutHandler(6))
.addHandlerLast(new WriteTimeoutHandler(6)))
//每次请求后执行flush,防止服务器主动断开连接
.doAfterRequest((httpClientRequest, connection) -> {
connection.channel().alloc().buffer().release();
connection.channel().flush();
connection.channel().pipeline().flush();
});
return WebClient.builder()
.baseUrl("http://127.0.0.1:8080")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader(HttpHeaders.CONNECTION, "keep-alive")
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
}
}
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播
相关文章
- SpringBoot获取Request对象的常见方法
- SpringBoot项目实现短信发送接口开发的实践
- SpringData JPA 如何搭建 xml的配置方式
- SpringBoot自定义线程池,执行定时任务方式
- spring webClient配置及使用简单代码示例
- SpringBoot配置log4j输出日志的案例讲解
- Springboot中的Controller解析
- Spring Boot之FilterRegistrationBean-自定义Filter详解
- Springboot读取外部配置文件,项目部署时配置读取不到问题及解决
- springtomize2怎么用 springtomize2教程及功能详细介绍(附springtomize2下载)