通过Stream和Promise协调任务

Figure 9. Doge如何使用 Reactor-Stream Figure 9. Doge如何使用 Reactor-Stream

Reactor Streams有以下特性:

  • Stream和它的直接实现
    • 包含Reactive扩展和其他组合类的API
  • Promise和一组独特的A+风味的API
    • 可以使用Promise.stream()转换为Stream
  • 静态工厂,一步创建关联组件
    • Streams是用于通过明确定义数据源(Iterable, nothing, Future, Publisher…)的Stream
    • BiStreams是用于创建处理key-value的Stream(reduceByKey…
    • IOStreams是用于持久化和解码的Stream
    • Promises是用于单一数据的Promise
  • Action和Stream提供的所有操作的直接实现都遵循Reactive Stream规范
    • 不直接创建,但是使用Stream API(Stream.map() → MapAction, Stream.filter() → FilterAction…)
  • Broadcaster,一种特殊的Action为动态数据分发暴露onXXXX接口
    • 不同于Core Processor,当没有消费者注册时他们不会犹豫是否缓存数据
    • 然而BehaviorBroadcaster可以重播最近的信号给新的Subscriber们

不要混淆reactor.rx.Stream和新的JDK 8java.util.stream.Stream。后者不提供基于Reactive Streams 的API或者Reactive扩展。然而,JDK8的Stream API是相当完整的适用于原始类型和集合的使用。实际上,JDK 8允许应用混合JDK和Reactive Stream还是挺有趣的。