限制应用级别的Spring WebClient调用

8

我正在使用Spring WebFlux和WebClient开发我的Web应用程序。

我的应用程序可能会调用我们托管的“N”个其他微服务。

现在的问题是,我想限制我的WebClient对现有微服务的同时调用数量。

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

我已经阅读了“如何限制活动的Spring WebClient调用数量?” 和 “如何使用WebClient限制请求/秒数?”,但没有成功。

2个回答

5
您可以像这样创建一个WebClient实例:
ConnectionProvider fixedPool = ConnectionProvider.fixed("fixedPool", maxConnections, acquireTimeout);
HttpClient httpClient = HttpClient.create(fixedPool);
WebClient webClient = WebClient.builder()
     .clientConnector(new ReactorClientHttpConnector(httpClient)).build();

4
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();

最大连接数和挂起获取超时是随机值,根据您的需求进行更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接