java - 什么时候应该阻止/订阅 Mono/Flux?

标签 java kotlin spring-webflux reactor

假设你有一些助焊剂和单声道

val people: Flux<Person> = repo.getPeople()
val peopleCount: Mono<Int> = people.count()

以及来自例如WebFlux Controller ,您返回 Mono:

data class Response(
    val people: List<People>,
    val personCount: Int
)

应用程序中的适当位置将通量和单声道分别解析为列表和整数?你只是阻止()一切吗?有没有办法让框架解决一切问题?

编辑:我想我主要的困惑是我看到的所有教程中响应对象内的字段实际上并不是 react 性的,所以看起来我需要在从 Controller 返回对象之前解决所有问题。如果响应对象看起来像这样,对我来说会更有意义

data class Response(
    val people: Flux<People>,
    val personCount: Mono<Int>
)

最佳答案

如果您在 servlet 世界中使用reactor,则只能阻止,即使这样您也可以传回 Mono/Flux,并且它将是一个异步请求。

举个例子,比如,

return repo.getPeople().collectList().map( people -> new response(peoples, people.count())

最终结果为 Mono<Response>框架将订阅的内容。

您需要使用 Mono/Flux 上的运算符,并且不要阻塞 react 链。我建议查看 Reactor java 文档。每个运算符(operator)都有很棒的图表,可以直观地了解运算符(operator)正在做什么。

关于java - 什么时候应该阻止/订阅 Mono/Flux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68669741/

相关文章:

java - 为什么调用 put() 在使用类似代码在 Java 中编译时无法在 Kotlin 中编译

java - 错误: Cannot fit requested classes in a single dex file (# methods: 67451 > 65536)

android - Kotlin 中 Holdr 的未解决引用

java - 在 Spring Boot Webflux 中生成服务器发送的事件

java - 捕获身份验证异常

c# - 为什么我不应该*覆盖 GetHashCode()?

JavaFX Canvas 高效动画

java - 在对 Play 2.0 的 fakeRequest 的后续 Java 调用中保持 session

java - 使用泛型的链表,出现 "not applicable arguments for parameters"错误

reactive-programming - map 和 doOnNext 有什么区别? (即项目 react 堆)