当前位置: 首页 > news >正文

Spring响应式编程之Reactor核心接口

响应式流的核心接口

核心接口包括:Publisher<T>、Subscriber<T>、Subscription 和 Processo<T,R>

(1)Publisher<T>

Publisher接口代表数据流的生产者,根据收到的请求向Subscriber发布数据。接口定义如下:

public interface Publisher<T> {void subscribe(Subscriber<? super T> s);
}

(2)Subscriber<T>

Subscriber代表数据流的消费者,负责订阅并接收Publisher发布的数据。接口定义如下:

public interface Subscriber<T> {void onSubscribe(Subscription s);void onNext(T t);void onError(Throwable t);void onComplete();
}
  • onSubscribe():回调方法,当发布者的 subscribe() 方法被调用时就会触发这个回调。而在该方法中有一个参数 Subscription():可以把这个 Subscription 看作是一种用于订阅的上下文对象。Subscription 对象中包含了这次回调中订阅者想要向发布者请求的数据个数。
  • onNext():当订阅关系已经建立,那么发布者就可以调用订阅者的 onNext() 方法向订阅者发送一个数据。这个过程是持续不断的,直到所发送的数据已经达到 Subscription 对象中所请求的数据个数。
  • onComplete():当所发送的数据已经达到 Subscription 对象中所请求的数据个数,触发onComplete() 方法,代表这个数据流已经全部发送结束。
  • onError():在发送数据过程中若出现异常,就会触发 onError() 方法,我们可以通过这个方法捕获到具体的异常信息进行处理,而数据流也就自动终止。

(3)Subscription

Subscription代表一种订阅上下文对象,用于管理Publisher和Subscriber之间的订阅关系。Subscription是确保发布者和订阅者针对数据处理速度达成一种动态平衡的基础,也是流量控制中实现背压机制的关键。接口定义如下:

public interface Subscription {void request(long n);void cancel();
}
  • request():请求发布者发送n个数据项,订阅者可以通过不断调用该方法来向发布者请求数据。
  • cance():取消订阅,停止接收数据。

(4)Processo<T,R>

Processo<T,R>接口既可以是Publisher也可以是Subscriber,用于对数据流进行处理和转换。接口定义如下:

public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {
}

Processo<T,R>接口方法详见:Spring响应式编程之Reactor操作符

http://www.lryc.cn/news/380784.html

相关文章:

  • 【HTTPS云证书部署】SpingBoot部署证书
  • React的状态提升和组合
  • 示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器
  • Python: create object
  • OpenSSL命令手册
  • [面试题]MongoDB
  • 【Qt笔记①】帮助文档、窗口、按钮、信号和槽、lambda表达式
  • 【pytorch05】索引与切片
  • ECharts 蓝色系-荧光图标折线图01案例
  • 使用消息中间件实现系统间的异步通信和解耦
  • 【QML】用 Image(QQuickPaintedItem) 显示图片
  • C++抽象类
  • 计算机网络 —— 应用层(DHCP)
  • Linux ComfyUI安装使用;Stable Diffusion 3使用
  • JavaScripts数组里的对象排序的24个方法
  • Mongodb介绍及window环境安装
  • Spring响应式编程之Reactor核心组件
  • 动手学深度学习(Pytorch版)代码实践 -计算机视觉-37微调
  • 视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享
  • 【jenkins1】gitlab与jenkins集成
  • 边缘计算设备有哪些
  • C++初学者指南第一步---7.控制流(基础)
  • MFC学习--CListCtrl复选框以及选择
  • 如何与PM探讨项目
  • 今年618各云厂商的香港服务器优惠活动汇总
  • Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流
  • WHAT - NextJS 系列之 Rendering - Server Components
  • Web项目部署后浏览器刷新返回Nginx的404错误对应解决方案
  • 视频与音频的交响:探索达摩院VideoLLaMA 2的技术创新
  • 更改ip后还被封是ip质量的原因吗?