当前位置: 首页 > 知识库问答 >
问题:

你应该什么时候屏蔽/订阅Mono/Flux?

纪秋月
2023-03-14

假设你有一些焊剂和monos

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

从WebFlux控制器返回一个单声道

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

在应用程序中,将通量和单声道分别解析为List和Int的合适位置在哪里?您只是阻止()所有内容吗?有没有办法获得解决所有问题的框架?

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

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

共有1个答案

韦阳辉
2023-03-14

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

给你举个例子,比如,

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

最后是单声道编码

您需要在Mono/Flux上使用运算符,而不是阻塞反应链。我建议查看Reactorjava文档。每个运算符都有很好的图表,可以直观地看到运算符在做什么。

 类似资料:
  • 在什么情况下Spring webflow会进行订阅?我在任何地方都读到必须有订阅,否则不会发生任何更改。在我使用Spring Webflow的短暂时间里,我从未在控制器或服务中见过。 我的疑问还在于,在使用flatMap时,。。。等订阅在什么时候进行? 我所读的并不能真正解决我的疑虑。 我知道这是一个异步问题,但每个flatMap都同时运行?。。。所以有时候我注意到一些数据是空的。

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

  • 问题内容: 我看过各种文章,但我仍然不知道为什么不应该使用它。请让我知道您的想法。 问题答案: 我发现有必要在错误的设计中使用instanceof提示。可以肯定的是,将会出现一个大型,复杂的开关风格的构造。在我看到的其他大多数情况下,我们应该使用多态而不是instanceof。请参阅策略模式。(相关的使用示例) 我唯一需要使用的是实现时。

  • 问题内容: 我担心这是运行时异常,因此应谨慎使用。 标准用例: 但这似乎会强制执行以下设计: 使它回到被检查的异常。 好的,但是让我们开始吧。如果输入错误,则会出现运行时错误。首先,这实际上是统一实施的相当困难的策略,因为您可能必须执行相反的转换: 更糟的是-虽然可以预期客户端代码将以静态方式进行检查,但对于更高级的数据(例如电子邮件地址)却并非如此,或更糟糕的是,必须对数据库进行检查,因此,一般