Spring WebClient使用方法`exchange`同步请求

问题描述

我正在使用Spring WebClient发出同步请求。我有一个代码

    WebClient client = webClient();

    for (int i = 0; i < 10; i++) {
        System.out.println("request " + i + ": ");
        client.get()
                .exchange() 
                .block()
                .releaseBody() // does this work here? 
                .doOnSuccess(res-> System.out.println("SUCCESS"))
                .doOnError(throwable -> System.out.println("ERROR"));
    }

代码恰好发送一个请求,第二个请求挂起。如果我稍加更改:

    for (int i = 0; i < 10; i++) {
        System.out.println("request " + i + ": ");
        client.get()
                .exchange()
                .flatMap(ClientResponse::releaseBody)
                .doOnSuccess(res -> System.out.println("SUCCESS"))
                .doOnError(throwable -> System.out.println("ERROR"))
                .block();
    }

它突然运作良好。这是否意味着在方法releaseBody()之后调用block()并没有消耗主体,从而导致连接泄漏?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)