核心处理者

核心处理者的工作比调度者更加专一:计算支持背压的异步任务。

同时它直接实现了org.reactivestreams.Processor 接口,可以良好地与其它响应式数据流提供方合作。比如同时作为订阅者发布者的处理者。你可以将它插入到响应式数据流链中你想要的地方(源,处理过程,槽)。

! 规范并不明确推荐直接使用 Processor.onNext(d)。我们技术上支持那种做法,但背压并不会传播,除非最终出现阻塞。你可以明确地用匿名订阅来做传递,先是用 Processor.onSubscribe 传递给处理者,用所实现的请求方式来获取背压反馈。

! OnNext 必须要序列化,例如每次来自一个单线程(不允许并发的 onXXX 信息)。不过 Reactor 可以支持这种方法,如果使用常规的 Processor.share() 方式创建处理者的话,比如 RingBufferProcessor.share()。在创建时就要决定用哪种方法,以便在实现中使用正确的协调逻辑,所以要谨慎选择:是要做一个标准发布序列(无并发),还是要使用多线程。

Reactor 在处理特定的某某工作处理者功能时有一个特例:

  • 通常响应式数据流处理者会将相同的数据序列异步调度至所有在给定时刻 T 订阅的订阅者。这与发布/订阅模式类似。

  • 工作处理者以方便的方式来分发数据,尽可能利用所有的订阅者。这意味着在给定时刻 T 的订阅者将一直看到不同的数据。这与工作队模式类似。

我们计划随着 2.x 的发布计划增加我们的核心处理者集。