Java 弹簧反应式WebClient通量传递

Java 弹簧反应式WebClient通量传递,java,spring,spring-boot,spring-webflux,spring-webclient,Java,Spring,Spring Boot,Spring Webflux,Spring Webclient,以下是我试图通过流量数据流实现的目标 Svc1--流量-->Svc2--流量-->MVC 我能够使用Flux成功地从Svc1传输数据。我的Svc1端点生成application/stream+json,如下所示: {"stuff":"more stuff"} ...1 sec passes... {"stuff":"other stuff"} ... and so on for n number 问题是Svc2将此数据传递给MVC。WebClient正在等待此流的整个结果,然后再执行任何操作。

以下是我试图通过流量数据流实现的目标

Svc1--流量-->Svc2--流量-->MVC

我能够使用Flux成功地从Svc1传输数据。我的Svc1端点生成application/stream+json,如下所示:

{"stuff":"more stuff"}
...1 sec passes...
{"stuff":"other stuff"}
... and so on for n number
问题是Svc2将此数据传递给MVC。WebClient正在等待此流的整个结果,然后再执行任何操作。它不会“阻止”我的代码,但会阻止后续的WebClient函数

我希望得到的结果是,当json项目1流入时,它将由WebClient处理,并在另一个流中发送到MVC

通过这种方式,当项目在后端创建时,它将在流媒体完全完成之前在前端可用

这是我的网络客户端代码,我正在努力解决这个问题,我做错了什么

WebClient client = WebClient.create(baseUrl)
          .get()
          .uri(url, uriVars)
          .retrieve()
          .bodyToFlux(String.class)
          .log()
          .subscribe()
WebClient正在获取以下信息:

[{"stuff":"more stuff"}, {"stuff":"other stuff"}]

请帮忙!:)

webclient正在获取阵列?如果您订阅,它将获取项目,然后在收到所有项目后结束订阅。是的,webclient似乎将所有项目“收集”到一个数组中(有效阻止)。例如,如果我添加一个.map()语句,它将在所有项目到达之前不会运行。我想要的行为是,它会在每个项目进入时立即进行处理。知道我的意思吗?不要订阅,使用map/flatmap“处理”订阅者是发起呼叫的客户端webclient正在获取阵列?如果您订阅,它将获取项目,然后在收到所有项目后结束订阅。是的,webclient似乎将所有项目“收集”到一个数组中(有效阻止)。例如,如果我添加一个.map()语句,它将在所有项目到达之前不会运行。我想要的行为是,它会在每个项目进入时立即进行处理。知道我的意思吗?不要订阅,使用map/flatmap来“处理”订阅方就是发起呼叫的客户端