项目反应器中 Flux.create() 与 Flux.push() 有什么区别?

Sho*_*que 5 reactor project-reactor

Flux.create 和 Flux.push 有什么区别?我正在寻找(最好有一个示例用例)来了解何时应该使用其中之一。

cha*_*rlb 1

来自https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html的文档

create() 以编程方式创建一个 Flux,能够通过 FluxSink API 以同步或异步方式发出多个元素。

Push() 以编程方式创建一个 Flux,能够通过 FluxSink API 从单线程生产者发出多个元素。

使用 create() 您可以从多个线程生成项目。仅当您不打算使用多线程时才使用push()。

  • 该问题要求用代码示例进行解释。简单地从“Flux”JavaDoc 中复制和粘贴内容并不是一个好的答案。 (2认同)
  • 我投票支持这个答案,因为从代码角度来看没有什么可展示的。您只需根据源确定它是单线程还是多线程。然后在“create()”或“push()”之间做出选择。我想说,“push()”确实经过了优化,可以更快地工作,唯一的缺点是它适用于单线程。否则 - 竞争条件。您绝对可以在文档中找到更多内容:https://projectreactor.io/docs/core/release/reference/#having。不知道我们还能在这里解释什么...... (2认同)