6

如果远程服务阻塞,我可以发送多少个并发请求?意思是:spring 使用时内部使用的maxConnectionWebClient池限制是多少?

@Autowired
private WebClient webClient;

webClient.post().uri(url).syncBody(req).retrieve().bodyToMono(type);

而且:我该如何修改它?

4

2 回答 2

11

在 reactor-netty 0.9.0.M4 版本之前,默认情况下没有限制,因为使用了“弹性”连接提供程序。此修复将其更改为“固定”连接提供程序,限制为 500。

要更改连接池限制,您可以定义自己的WebClient.Builderbean 并使用它来创建WebClient

@Bean
public WebClient.Builder webClientBuilder() {
    String connectionProviderName = "myConnectionProvider";
    int maxConnections = 100;
    int acquireTimeout = 1000;
    HttpClient httpClient = HttpClient.create(ConnectionProvider
            .fixed(connectionProviderName, maxConnections, acquireTimeout));
    return WebClient.builder()
            .clientConnector(new ReactorClientHttpConnector(httpClient));
}

或者您可以org.springframework.boot.web.reactive.function.client.WebClientCustomizer使用预定义的相同方式实现自定义WebClient.Builder

于 2019-08-28T08:34:36.303 回答
3

取自 netty文档

默认情况下,TCP 客户端使用“固定”连接池,最大通道数为 500,获取超时时间为 45s。

于 2019-08-27T20:24:47.253 回答