Spring Web Client - 如何忽略传入的响应?

Spring Web Client - how to ignore incoming responses?

提问人:Słowik 提问时间:10/24/2023 更新时间:10/24/2023 访问量:52

问:

我的应用程序正在使用 Spring Web Client 发送多个请求(高达 3k/s)。下面是示例端点

ConnectionProvider connectionProvider = ConnectionProvider.builder("myConnectionPool")
        .maxConnections(5000)
        .pendingAcquireMaxCount(10000)
        .build();

ReactorClientHttpConnector clientHttpConnector = new ReactorClientHttpConnector(HttpClient.create(connectionProvider));

WebClient webClient = WebClient
        .builder()
        .clientConnector(clientHttpConnector)
        .build();

@GetMapping(value = "my_endpoint")
public void getSomething(String token) {
    webClient.get()
            .uri(BASE_URL + "/my_endpoint")
            .header("Authorization", "Bearer " + token)
            .retrieve()
            .bodyToFlux(String.class)
            .onErrorResume(error -> Flux.empty())
            .subscribe();
}

我面临的问题是内存使用,应用程序有时会卡在 1200-1500 req/s 左右。 我只想发送我将要发送的内容,而完全忽略回复。发送后忘记。使用 Spring Web 客户端可以吗? 或者也许我的 WebClient 配置错误?

spring-boot spring-web客户端

评论

0赞 lane.maxwell 10/25/2023
如果只想忽略响应,请删除下游的所有内容并将其替换为 。用retrieve().toBodilessEntity()webClient.get().uri(BASE_URL + "/my_endpoint").header("Authorization", "Bearer " + token).retrieve().toBodilessEntity();
0赞 Słowik 10/26/2023
@lane.maxwell 这不起作用,接收器服务没有收到任何请求
0赞 lane.maxwell 10/26/2023
对不起,您仍然需要对从通话中返回的 Mono 执行一些操作。您可以简单地添加 ,也可以订阅它并返回 ResponseEntity<Void>toBodilessEntity().block()

答: 暂无答案