在本指南中,您将学习Java 9中的Flow API如何帮助您使用新的Publisher和Subscriber构建反应模式。阅读之后,您应该能够理解这种新的编程风格及其优缺点。
本指南重点介绍新的 Flow API,它使我们能够仅使用JDK采用Reactive Programming,而不需要其他库,如RxJava或Project Reactor等。
但是,在看了API之后,你很快就会发现这个API由几个接口和一个实现组成:
接口 Flow.Publisher 定义了生成项目和控制信号的方法。
Flow.Subscriber 接口 定义了接收这些消息和信号的方法。
Flow.Subscription接口 定义了链接发布服务器和订阅服务器的方法。
接口 Flow.Processor 定义了一些方法来执行一些高级操作,例如将项目的转换从发布者链接到订阅者。
最后,SubmissionPublisher类 实现了Flow.Publisher ,它是一个灵活的项目生成器,符合Reactive Streams计划。
即使没有很多类可以使用,包括Java 9中的这个API也是一个重大变化:第三方可以为依赖于这些接口的库提供Reactive支持,例如从JDBC驱动程序到RabbitMQ的反应式实现。
从Pull 到Push 再到Pull-Push
反应式编程主要是消费者控制数据流,由于它集成在主要框架和库分发版(例如Java 9或Spring 5)中,它现在变得流行,并且分布式系统的兴起带来了大量的数据需要相互关联传达。
回顾过去有助于我们了解其崛起。几年前,从消费者那里获取数据的最流行的技术是基于Pull拉的机制。客户端定期轮询数据&#x