java 简单 reactor_JVM上的响应式流 — Reactor简介

强烈建议先阅读下JVM平台上的响应式流(Reactive Streams)规范,如果没读过的话。

官方文档:https://projectreactor.io/。

响应式编程

作为响应式编程方向上的第一步,微软在.NET生态系统中创建了Rx库(Reactive Extensions)。RxJava是在JVM上对它的实现。

响应式编程是一个异步编程范式,通常出现在面向对象的语言中,作为观察者模式的一个扩展。

它关注数据的流动、变化的传播。这意味着可以轻易地使用编程语言表示静态(如数组)或动态(如事件发射源)数据流。

响应式流

随着时间的推移,一个专门为Java的标准化出现了。它是一个规范,定义了一些接口和交互规则,用于JVM平台上的响应式库。

它就是响应式流(Reactive Streams),它的这些接口已经被集成到Java 9里,在java.util.concurrent.Flow这个父类里。

响应式流和迭代器较相似,不过迭代器是基于“拉”(pull)的,而响应式流是基于“推”(push)的。

迭代器的使用其实是命令式编程,因为由开发者决定什么时候调用next()获取下一个元素。

在响应式流中,与上面等价的是发布者-订阅者。但当有新的可用元素时,是由发布者推给订阅者的。这个“推”就是响应式的关键所在。

另外,对被推过来元素的操作也是以声明的方式进行的,程序员只需表达做什么就行了,不需要管怎么做。

发布者使用onNext方法向订阅者推送新元素,使用onError方法告知一个错误,使用onComplete方法告知已经结束。

可见,错误处理和完成(结束)也是以一个良好的方式被处理。错误和结束都可以终止序列。

这种方式非常灵活。这种模式支持0个(没有)元素/1个元素/n(多)个元素(包括无限序列,如果滴答的钟表)这些情况。

Reactor粉墨登场

Reactor是第四代响应式库,是一个响应式编程范式的实现,用于在JVM平台上基于响应式流规范构建非阻塞异步应用。

它极大地实现了JVM上响应式流的规范(http://www.reactive-streams.org/)。

它是一个完全非阻塞响应式编程的基石,带有高效需求管理(以管理“后压”的形式)。

它直接集成Java函数式API,特别是CompletableFuture,Stream和Duration。

它支持使用reactor-netty工程实现非阻塞跨进程通信,适合微服务架构,支持HTTP(包

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值