Reactor项目中的Fuseable接口有什么用?

时间:2019-08-05 14:14:30

标签: project-reactor

Reactor源代码中有很多Fuseable接口的用法,但是我找不到任何参考。有人可以解释它的目的吗?

1 个答案:

答案 0 :(得分:1)

Fuseable接口及其包含的接口定义用于流融合的协定。流融合是反应流的优化。

没有任何这样的优化(如果可以的话,在“正常”执行中),每个反应式运算符:

  • 订阅链中的前一个运营商
  • 订阅者完成时收到通知
  • 执行其操作
  • 通知其订户

...然后对所有操作员重复该循环。确保所有内容保持非阻塞状态非常好,但是所有这些异步调用都需要一定的开销。

“流融合”(或“运算符融合”)通过在一个块中执行两个或多个操作(将它们作为一个单元融合在一起),使用Queue或而不是通过订阅,从而消除了这种开销。当然,这并非总是可能的-如果并行运行,出现某些副作用等无法以这种方式完成-但有可能进行整洁的优化。