我正在使用Project Reactor,并且正在使用Flux.flatMapIterable。 (我基本上有一个对象A的流;对于每个对象A,我将其平面映射到对象B的流中,并从中获取新的流量。)

我正在尝试了解prefetch设置的作用。在我的情况下,每个对象A都可以转换为任意数量的对象B(0到N之间; N很大)。

我只想了解:

  • 什么是预取?它仅适用于初始请求吗? (即,如果我将其设置为1,如果发现1太小,Project Reactor是否足够智能以增加请求大小?)
  • 与我在这里的情况有关吗?我正在考虑将预取设置为1,以便比较保守,因为单个A对象有可能被映射到B对象的大量流中。
  • 最佳答案

    预取将影响Reactor在第一个请求中从发布者请求的项目数量。这是一个影响后续请求的上限,当发出75%的预取量后,后续请求将被触发,因此不会自动增加。

    它通常用于使用者请求大量数据但数据源表现更好或可以通过较小请求进行优化(例如数据库分页等)的场景。

    它是否与您的用例相关,取决于发布者的特征。

    从[文档]中配置背压1

    关于spring - 预取在Project Reactor中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56675511/

    10-15 10:25