大佬教程收集整理的这篇文章主要介绍了如何在Spring 5 WebFlux WebClient中设置超时,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
WebFlux WebClIEnt
不使用Apache Commons http ClIEnt。虽然你可能可以通过custom实现一个解决方案ClIEnthttpConnector
。现有ReactorClIEnthttpConnector
基于Netty。因此,考虑使用Netty选项来配置客户端,例如:
ReactorClIEnthttpConnector connector =
new ReactorClIEnthttpConnector(options ->
options.option(ChAnnelOption.so_TIMEOUT, this.applicationConfig.gethttpClIEntConnectTimeout()));
要么
.onChAnnelinit(chAnnel -> chAnnel.config().setConnectTimeoutMillis(this.applicationConfig.gethttpClIEntConnectTimeout()))
更新
我们也可以使用ReadTimeoutHandler:
.onChAnnelinit(chAnnel ->
chAnnel.pipeline()
.addLast(new ReadTimeoutHandler(this.applicationConfig.gethttpClIEntConnectTimeout())))
要设置读取和连接超时,我使用下面的方法,因为SO_TIMEOUT选项不适用于使用NIO的通道(并发出警告UnkNown chAnnel option 'SO_TIMEOUT' for chAnnel '[ID: 0xa716fcb2]'
)
ReactorClIEnthttpConnector connector = new ReactorClIEnthttpConnector(
options -> options.option(ChAnnelOption.CONNECT_TIMEOUT_MILliS, 2000)
.compression(true)
.afterNettyContexTinit(ctx -> {
ctx.addHandlerLast(new ReadTimeoutHandler(5000, TimeUnit.MILliSECONDS));
}));
return WebClIEnt.builder()
.clIEntConnector(connector)
.build();
我正在尝试在WebClient上设置超时,这是当前代码:
SslContext sslContext = SslContextBuilder.forClient().trustManager(InsecureTrustManagerFactory.INSTANCE).build();
ClienthttpConnector httpConnector = new ReactorClienthttpConnector(opt -> {
opt.sslContext(sslContext);
httpClientOptions option = httpClientOptions.builder().build();
opt.from(option);
});
return WebClient.builder().clientConnector(httpConnector).defaultHeader("Authorization",xxxX)
.baseUrl(this.opusConfig.getBaseURL()).build();
我需要添加超时和池策略,我在想这样的事情:
PoolinghttpClientConnectionManager cm = new PoolinghttpClientConnectionManager();
cm.setMax@R_882_10586@l(this.applicationConfig.gethttpClientMaxPoolSize());
cm.setDefaultMaxPerRoute(this.applicationConfig.gethttpClientMaxPoolSize());
cm.closEIDleConnections(this.applicationConfig.getServerIdleTimeout(),TimeUnit.MILLISECONDS);
requestConfig requestConfig = requestConfig.custom().setSocketTimeout(this.applicationConfig.gethttpClientSocketTimeout())
.setConnectTimeout(this.applicationConfig.gethttpClientConnectTimeout())
.setConnectionrequestTimeout(this.applicationConfig.gethttpClientrequestTimeout()).build();
CloseablehttpClient httpClient = httpClients.custom().setDefaultrequestConfig(requestConfig).setConnectionManager(cm).build();
但是我不知道如何在我的webclient中设置httpClient
以上是大佬教程为你收集整理的如何在Spring 5 WebFlux WebClient中设置超时全部内容,希望文章能够帮你解决如何在Spring 5 WebFlux WebClient中设置超时所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。