和用java future编程的区别是没有锁.
一个线程在遍历所有的监听点, 有变动就回调接口. 类似epool模型.
类似mapReduce
Spring Reactor 入门与实践
适合阅读的人群:本文适合对 Spring、Netty 等框架,以及 Java 8 的 Lambda、Stream 等特性有基本认识,希望了解 Spring 5 的反应式编程特性的技术人员阅读。
反应式编程其实并不神秘,通过与我们熟悉的迭代器模式对比便可了解其基本思想:
event Iterable (pull) Observable (push) retrieve data T next()
onNext(T)
discover error throws Exception
onError(Exception)
complete !hasNext()
onCompleted()
上面表格的中的 Observable 那一列便代表反应式编程的 API 使用方式。可见,它就是常见的观察者模式的一种延伸。如果将迭代器看作是拉模式,那观测者模式便是推模式。被订阅者(Publisher)主动的推送数据给订阅者(Subscriber),触发
onNext
方法。异常和完成时触发另外两个方法。如果 Publisher 发布消息太快了,超过了 Subscriber 的处理速度,那怎么办。这就是 Backpressure 的由来,Reactive Programming 框架需要提供机制,使得 Subscriber 能够控制消费消息的速度。
最重要的是
Reactive Streams 是规范,Reactor 实现了 Reactive Streams。Web Flux 以 Reactor 为基础,实现 Web 领域的反应式编程框架。
Reactive Spring实战 -- WebFlux使用教程
订单服务提供接口查找订单信息,同时,该接口实现还需要调用仓库服务查询仓库信息,商品服务查询商品信息,并过滤,取前5个商品数据。