Mono<List<T>> 与 Spring webflux 中的 Flux<T> 的区别

zhu*_*hen 4 reactor spring-webflux

我的理解是Mono<List<T>>同步Flux<T> 和 Flux 不能是休息 api 响应。

我对吗?

如果不是,那么 Flux之间有什么不同Mono<List<T>>Flux<T>或者 Flux 可能是某个地方的 rest api 响应?

Bri*_*zel 13

  • 作为返回类型,Mono<List<T>>意味着您将T一次性异步获取完整的元素列表。
  • Flux<T>意味着您将获得零到多个T元素,可能会一一出现。

如果您从 HTTP 客户端(例如 )获取此类返回类型WebClientMono<List<T>>并且Flux<T>从运行时的角度来看可能或多或少等效,如果返回的Content-Type是例如"application/json"。在这种情况下,解码器将一次性反序列化响应。唯一不同的是,Flux<T>提供了更多有趣的操作符,您可以始终collectList使用Mono<List>.

另一方面,Content-Type例如,如果返回的是流式传输的,"application/stream+json"那么这肯定会产生影响,因为您将一个接一个地获取元素。事实上,如果返回的流是无限的,选择Flux<T>是非常重要的,因为另一个永远不会完成。