reactor
文章平均质量分 83
lang20150928
stay hungry stay foolish
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Reactor ConnectableFlux支持多订阅者
本文介绍了Reactor框架中的ConnectableFlux机制,它允许控制响应式流的订阅时机和数据生成。主要包含两种模式:publish动态满足订阅者需求,replay缓存并重放数据。文章详细讲解了四种管理方法:connect()手动触发订阅,autoConnect(n)自动连接,refCount(n)动态跟踪订阅,以及带宽限期的refCount(int,Duration)。通过代码示例展示了在实时数据推送、分布式系统和IoT等场景中的应用,体现了ConnectableFlux在处理多订阅者协调方面的灵原创 2025-07-01 19:33:55 · 993 阅读 · 0 评论 -
Reactor Hot Versus Cold
摘要: 本文对比了Reactor中的冷发布者(Cold Publisher)和热发布者(Hot Publisher)。冷发布者在订阅时生成数据,每个订阅者独立触发完整数据流(如HTTP请求);热发布者则主动推送数据,订阅者仅接收订阅后的数据(如股票行情)。通过代码示例展示了二者的差异,并介绍了share()、replay()(冷转热)和defer()(热转冷)等转换方法。理解两者的区别对设计高效响应式系统至关重要,尤其在实时数据处理场景中。原创 2025-07-01 14:35:05 · 1161 阅读 · 0 评论 -
Reactor操作符的共享与复用
React中的transform和transformDeferred操作符用于封装和复用操作符链。transform在实例化时应用操作链,适用于所有订阅者共享相同行为的场景;而transformDeferred在订阅时应用,可针对不同订阅者生成不同操作链并维护状态。两者关键区别在于执行时机和是否支持动态操作链:transform固定且静态,transformDeferred灵活且动态。前者适合统一处理(如日志记录),后者适用于需要个性化处理的场景(如基于订阅者状态的差异处理)。原创 2025-06-30 20:01:23 · 788 阅读 · 0 评论 -
reactor-test
reactor-test是Reactor库中的测试工具,主要用于验证响应式流的正确性。其核心功能包括:1)StepVerifier按步骤验证序列事件(如值、错误、完成);2)TestPublisher手动生成数据流测试下游逻辑;3)检测条件分支下的替代Publisher(如switchIfEmpty)。这些工具通过精确控制数据流和验证预期行为,确保响应式代码的可靠性。测试示例涵盖基本序列验证、操作符测试及条件路径检查。原创 2025-06-30 16:28:35 · 524 阅读 · 0 评论 -
Reactor Sinks
本文介绍了 Reactor 框架中的 Sinks(汇流器)机制。Sinks 是用于向 Flux 或 Mono 发送数据的生产端,支持非阻塞、响应式的数据推送。文章详细讲解了 FluxSink 和 MonoSink 两种类型及其核心方法(next、error、complete 等),分析了 Sinks 在手动控制数据流、外部系统集成和背压控制等场景的应用,并提供了代码示例。最后强调了使用注意事项,包括避免重复使用、正确处理背压等。Sinks 为响应式编程提供了灵活的数据推送方式。原创 2025-06-30 15:53:20 · 896 阅读 · 0 评论 -
Reactor 瞬态错误
在响应式编程中,retryWhen操作符通过RetrySignal接口实现对重试行为的精细控制,特别适用于处理瞬态错误(如网络请求短暂失败)。当启用transientErrors(true)配置时,系统会使用totalRetriesInARow()来独立处理每次连续失败(burst),并在成功恢复后重置计数。这区别于常规重试的单调递增计数方式,确保了每次错误爆发都能获得独立的重试机会,不会因前次失败影响后续处理。这种机制有效解决了网络请求等场景中短暂故障的容错问题,示例代码展示了如何实现该模式并验证其效果。原创 2025-06-30 15:09:06 · 490 阅读 · 0 评论 -
Reactor重试操作
摘要: retry和retryWhen是响应式编程中处理错误重试的核心操作符。retry通过固定次数重试(如retry(3)),适用于简单场景;而retryWhen支持自定义逻辑,如条件重试、指数退避等,通过RetrySignal提供重试状态跟踪。两者均通过重新订阅上游数据流实现恢复,但retryWhen灵活性更高,适合复杂需求。合理使用二者可增强系统的容错性。原创 2025-06-30 13:39:25 · 763 阅读 · 0 评论 -
Reactor资源释放
在Reactor中,doFinally和using分别对应命令式编程中的finally块和try-with-resources机制。doFinally在流终止时执行清理操作,提供完成/错误/取消三种终止类型判断,适用于日志记录等副作用处理。using则自动管理资源生命周期,在生成数据流后执行资源释放,确保响应式场景下的资源安全。两者都解决资源泄漏问题,但适用场景不同:doFinally专注流生命周期回调,using实现资源的声明式管理。通过类比传统编程模式,可以更直观地理解这两个响应式操作符的作用机制。原创 2025-06-30 10:50:52 · 908 阅读 · 0 评论 -
publishOn and subscribeOn operators
Reactor中的subscribeOn和publishOn是控制响应式链执行上下文的关键方法。subscribeOn从源头指定整个操作链的执行线程,位置无关;而publishOn仅影响后续操作,位置敏感。subscribeOn优先级更高,会覆盖publishOn的设置。通常用subscribeOn控制源头线程,publishOn优化中间操作。理解两者区别是掌握Reactor并发模型的核心。原创 2025-06-26 17:41:20 · 529 阅读 · 0 评论 -
Reactor boundedElastic
摘要: boundedElastic调度器专为阻塞操作设计,支持block()等API;而single和parallel仅适用于非阻塞任务,调用阻塞方法会抛出IllegalStateException。自定义调度器可通过实现NonBlocking接口标记为非阻塞专用。关键区别在于:boundedElastic管理弹性线程池处理I/O阻塞,后两者优化低延迟或CPU密集型任务,阻塞操作会破坏其线程模型。开发者需根据任务类型选择调度器,避免混合使用导致异常。(150字)原创 2025-06-26 17:33:52 · 402 阅读 · 0 评论 -
Reactor Schedulers
Reactor的Schedulers是响应式编程中的核心调度机制,提供多种线程管理策略。主要类型包括:immediate()同步执行、single()单线程、elastic()弹性线程池、parallel()固定线程池、boundedElastic()有界弹性池,以及支持自定义线程池的fromExecutorService()。通过subscribeOn和publishOn可灵活控制任务执行线程,前者影响整个流,后者作用于后续操作。Schedulers适用于IO/CPU密集型任务、测试调试等场景,其优势在于原创 2025-06-26 16:47:57 · 690 阅读 · 0 评论 -
Reactor并发无关性
Reactor框架采用"并发无关"设计理念,不强制使用特定并发模型,而是提供灵活选择。它通过调度器(Schedulers)、subscribeOn/publishOn操作符、背压机制和错误处理等工具,让开发者自由控制并发策略,同时确保高性能异步处理。这种设计既保持了框架的灵活性,又简化了并发编程复杂度,使其成为构建响应式应用的强大工具。原创 2025-06-26 16:29:34 · 355 阅读 · 0 评论 -
Reactor Handle
handle是Reactor中灵活的操作符,兼具映射和过滤功能。它通过BiConsumer处理源元素,可选择性发出零或多个结果,避免了map可能引发的NullPointerException。与filter只能过滤不同,handle能同时完成转换和过滤,特别适合处理可能返回null的映射场景。其轻量级特性使其成为替代mapNotNull的理想选择,为数据流处理提供了更安全灵活的控制方式。原创 2025-06-26 16:22:10 · 740 阅读 · 0 评论 -
混合推送/拉取(push/pull)模型
Reactor的create操作符采用混合推送/拉取模型,结合了两种机制的优点:推送模式允许上游主动发送数据,提高异步处理效率;拉取模式让消费者通过request(n)控制数据流,实现背压管理。这种混合设计既保证了数据实时性,又避免了下游过载,通过onRequest回调与即时推送的配合,实现了灵活的资源控制和高效处理。典型应用场景包括事件监听与历史数据获取相结合的情况。原创 2025-06-26 16:15:13 · 480 阅读 · 0 评论 -
Flux.create
摘要:本文介绍了如何利用Flux.create()方法将异步监听器API(如MyEventListener)转换为响应式流Flux<T>。重点说明了通过Flux.create()构建桥接机制,将监听器事件(数据块和完成通知)映射为Flux信号。同时阐述了关键背压策略(如BUFFER、DROP等)的作用机制及适用场景,强调异步处理和资源管理的注意事项。该方法适用于消息队列、事件总线等异步数据源集成,可实现高效的响应式流处理。原创 2025-06-26 16:05:32 · 1028 阅读 · 0 评论 -
Reactor Sink
摘要: Reactor框架通过Sink接口编程式创建Flux/Mono,其核心是通过调用onNext、onError和onComplete事件控制响应式流。generate方法使用SynchronousSink同步生成流,示例展示了如何分步发送数据并终止流。Reactor还提供AsyncSink、FluxSink等变体适应不同场景。Sink机制赋予开发者对事件触发的完全控制,是构建灵活响应式流的关键工具。(149字)原创 2025-06-26 15:46:11 · 356 阅读 · 0 评论 -
BaseSubscriber
SampleSubscriber类继承自BaseSubscriber,是Reactor框架中实现自定义订阅者的推荐方式。该抽象类提供多个可重写的钩子方法(如hookOnSubscribe、hookOnNext等),用于在订阅、接收数据等不同阶段插入自定义逻辑。默认情况下会发起无界请求(request(Long.MAX_VALUE)),但开发者可通过覆写方法实现背压控制。示例展示了如何通过hookOnSubscribe请求初始元素,并在hookOnNext中逐个请求后续元素。相比Lambda表达式,BaseS原创 2025-06-26 15:32:05 · 792 阅读 · 0 评论
分享