在应用程序级别限制Spring WebClient调用

时间:2018-12-16 05:06:10

标签: spring spring-webflux

我在Web应用程序中使用Spring WebFlux和WebClient。

我的应用程序可能无法再调用由我们再次托管的其他微服务调用“ N”。

现在的问题是我想限制我的WebClient调用对现有微服务的有限呼叫。

此外,我不想在单个调用级别上执行,而是在应用程序级别上执行。

我已经经历过thisthis

2 个答案:

答案 0 :(得分:0)

您可以创建一个WebClient实例,如下所示:

ConnectionProvider fixedPool = ConnectionProvider.fixed("fixedPool", maxConnections, acquireTimeout);
HttpClient httpClient = HttpClient.create(fixedPool);
WebClient webClient = WebClient.builder()
     .clientConnector(new ReactorClientHttpConnector(httpClient)).build();

答案 1 :(得分:0)

reactor-netty 0.9.5起,布莱恩·克洛泽尔​​(Brian Clozel)描述的方法已被弃用,请改用:

ConnectionProvider fixedPool = ConnectionProvider.builder("fixedPool")
        .maxConnections(200)
        .pendingAcquireTimeout(Duration.ofMinutes(3))
        .build();
HttpClient httpClient = HttpClient.create(fixedPool);
WebClient webClient = WebClient.builder()
        .clientConnector(new ReactorClientHttpConnector(httpClient))
        .build();

最大连接数和等待获取超时是随机值,请根据需要进行更改。