首页 > 解决方案 > 单核细胞增多症> 与 Flux 的区别在 Spring webflux 中

问题描述

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

我对吗?

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

标签: spring-webfluxreactor

解决方案


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

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

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


推荐阅读