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

重庆购务网站建设网上做广告推广

重庆购务网站建设,网上做广告推广,wordpress 扫码付款,像美团这种网站怎么做前言:Reactor 是一种事件驱动的高性能网络编程模型,主要用于处理高并发的网络 I/O 请求。其核心思想是通过一个或多个线程监听事件,并将事件分发给相应的处理程序,从而实现高效的并发处理。在响应式编程(如 Project Re…

前言:Reactor 是一种事件驱动的高性能网络编程模型,主要用于处理高并发的网络 I/O 请求。其核心思想是通过一个或多个线程监听事件,并将事件分发给相应的处理程序,从而实现高效的并发处理。在响应式编程(如 Project Reactor)中,理解 发布(Publish)与订阅(Subscribe)、生产者(Producer)与消费者(Consumer) 的概念非常重要。它们是构建异步、非阻塞数据流的基础模型。


一、Reactor基本概念

1. 发布者(Publisher)

  • 是数据的提供方。

  • 在 Project Reactor 中,Flux 和 Mono 都实现了 Publisher<T> 接口。

  • 它不主动发送数据,而是等待被订阅后才开始发射数据。

类比:就像一个电台频道,在没有人收听时它不会“广播”内容,只有当有人打开收音机(订阅),才会开始播放节目。

Flux<String> publisher = Flux.just("A", "B", "C"); // Publisher

2. 订阅者(Subscriber)

  • 是数据的接收方。

  • 实现 Subscriber<T> 接口,或者使用 .subscribe() 方法作为简化方式。

  • 订阅者会通过回调方法接收数据(onNext)、异常(onError)或完成信号(onComplete)。

publisher.subscribe(data -> System.out.println("Received: " + data), // onNexterr -> System.err.println("Error: " + err),      // onError() -> System.out.println("Done!")                // onComplete
);

3. 订阅(Subscription)

  • 是连接 Publisher 和 Subscriber 的桥梁。

  • 每次调用 .subscribe() 都会创建一个新的 Subscription

  • 支持背压(backpressure)控制:消费者可以告诉生产者“我一次只能处理 N 个元素”。

publisher.subscribe(new Subscriber<>() {private Subscription subscription;@Overridepublic void onSubscribe(Subscription s) {this.subscription = s;subscription.request(1); // 请求第一个数据}@Overridepublic void onNext(String t) {System.out.println("Got: " + t);subscription.request(1); // 继续请求下一个}@Overridepublic void onError(Throwable t) {t.printStackTrace();}@Overridepublic void onComplete() {System.out.println("Completed");}
});

二、生产者和消费者模型(Producer/Consumer)

角色描述
生产者(Producer)提供数据流的一方,即 Publisher(如 FluxMono
消费者(Consumer)接收并处理数据的一方,即 Subscriber
  • 数据从生产者流向消费者。

  • 这种模型支持异步非阻塞的数据传输。

  • 可以通过 背压机制 控制流量,避免消费者被过量数据淹没。


三、Reactor 中的发布与订阅流程

[Publisher] --> (onSubscribe) --> [Subscriber]↓(request)↓
[Publisher emits data via onNext]↓
[Subscriber receives data]↓
[Eventually onComplete or onError]

流程说明:

  1. 订阅建立

    • 调用 .subscribe() 后,Publisher 会调用 onSubscribe(Subscription)

  2. 请求数据

    • Subscriber 调用 subscription.request(n) 表示希望接收 n 个数据。

  3. 数据发射

    • Publisher 发射数据项,调用 onNext(T)

  4. 结束或错误

    • 成功结束:调用 onComplete()

    • 出错:调用 onError(Throwable)


 四、实际应用举例

示例:模拟生产者和消费者的协作(带背压)

Flux.range(1, 100).subscribe(new Subscriber<>() {private Subscription subscription;private int count = 0;@Overridepublic void onSubscribe(Subscription s) {this.subscription = s;subscription.request(5); // 初始请求5个数据}@Overridepublic void onNext(Integer integer) {System.out.println("Consuming: " + integer);count++;if (count % 5 == 0) {subscription.request(5); // 每消费5个再请求5个}}@Overridepublic void onError(Throwable throwable) {throwable.printStackTrace();}@Overridepublic void onComplete() {System.out.println("All items consumed!");}});

 五、常见误区

错误理解正确理解
Flux.just(...) 会立即发射数据不会,除非有订阅者才会发射
Flux 是热源(Hot)默认是冷源(Cold),每次订阅都会重新开始
subscribe() 返回值无关紧要可用于取消订阅(返回 Disposable
所有操作符都是同步的很多操作符是异步的,比如 flatMapdelayElements 等

六、总结

概念说明
Publisher数据源,如 Flux 或 Mono
Subscriber数据消费者,实现 onNextonErroronComplete
Subscription控制数据流动的接口,支持背压
生产者/消费者模型数据从生产者流向消费者,由订阅驱动
背压(Backpressure)消费者可以控制生产者的发射速率
冷流 vs 热流冷流每次订阅都从头开始;热流共享数据流(如 ConnectableFlux

如果你正在使用 Spring WebFluxRSocketKafka Streams 或其他响应式框架,理解这些核心概念将帮助你更好地设计和调试异步系统。

http://www.dtcms.com/wzjs/472089.html

相关文章:

  • php网站建设视频百度推广怎么优化排名
  • 如何进行搜索引擎优化 简答案吴江seo网站优化软件
  • tp5网站开发逻辑架构baidu百度一下
  • wordpress盲注9个广州seo推广神技
  • 为什么建设网站很多公司没有宁德市蕉城区
  • 政府网站集约化建设问题网站搜索引擎优化方法
  • 网站优化要怎么做才会做到最佳微信运营技巧
  • 大兴做网站建设制作图片外链生成工具
  • 有没有专门做纸箱的网站软件开发培训
  • 商城小程序开发报价昆明seo关键词排名
  • 传统pc网站深圳网络公司推广
  • seo外包服务费用百度如何优化
  • 怎么看一个网站是html5衡阳seo外包
  • 2022年国内重大新闻优化搜索引擎的方法
  • 外贸wap网站对网站外部的搜索引擎优化
  • 微网站建设高端网站定制微信软文案例
  • 深圳网站建设与网站制作网站注册步骤
  • 湖南网络推广机构青岛网站seo
  • 网页qq登陆保护怎么关深圳网络推广seo软件
  • 专门做行测题的网站上海公关公司
  • 做短视频网站用哪家cms整合营销什么意思
  • 医院招聘网站建设和维护人员全世界足球排名国家
  • jsp网站开发源码实例江苏网站建设推广
  • 做网站一个程序员够吗公司网站seo公司
  • 河北建筑网站成都百度网站排名优化
  • 重庆可视化网站制作sem是什么工作
  • 8网站建设做网站百度公司电话是多少
  • 安徽淮北发现一例无排名优化
  • 专业网站开发技术新冠咳嗽怎么办
  • 一个帮你赚钱的网站是谁做的广告域名访问网站入口