gpt4 book ai didi

rx-java - Java Spring WebFlux 与 RxJava

转载 作者:行者123 更新时间:2023-12-02 16:42:28 26 4
gpt4 key购买 nike

我开始学习 Java 响应式编程。整个 react 范式对我来说是新的。

在我的学习过程中,我遇到过一些术语/库,例如 Spring WebFlux、projectreactor 和 RxJava。我希望有人能够解释这些差异是什么、您在项目中使用了哪一个以及为什么做出了这一选择。

我读到Spring WebFlux实际上在内部使用了projectreactor的Flux/Mono。这简化了 Spring Webflux 相对于 RxJava 的优缺点的问题?

最佳答案

响应式编程是一种编程范式,但我不会称其为新的。它实际上已经存在了一段时间了。就像面向对象编程、函数式编程或过程式编程一样,响应式(Reactive)编程是另一种编程范式。

范式由 Reactive Manifesto 定义

另一方面,

react 流是一种规范。

对于 Java 程序员来说,Reactive Streams 是一个 API。它是来自 Kaazing、Netflix、Pivo​​tal、Red Hat、Twitter、Typesafe 等众多公司的工程师合作的产物。 Reactive Streams 很像 JPA 或 JDBC。两者都是API规范。

Reactive Streams API 仅包含 4 个高级接口(interface)。

  1. 出版商:发布者是潜在无限数量的排序元素的提供者,根据从其订阅者收到的需求来发布它们。
  2. 订阅者:将订阅者实例传递给发布者后,将收到对 Subscriber.onSubscribe(Subscription) 的调用。订阅(订阅者)。
  3. 订阅:订阅代表订阅者订阅发布者的一对一生命周期。
  4. 处理器:处理器代表一个处理阶段,它既是订阅者又是发布者,并遵守两者的契约(Contract)。

这些概念在不同层次、不同领域有不同的表现。例如。 java 开发人员可以考虑如何在应用程序级别进行编程,数据库工程师可以考虑数据库如何对响应式(Reactive) API 调用使用react(例如,Mongo DB 实现了响应式(Reactive)流驱动程序),网络程序员可以考虑如何响应式(Reactive)调用可以在网络级别生效。

一些遵循响应式(Reactive)流规范的基于 JVM 的框架是

  • Akka Streams 框架
  • 老鼠包
  • Vert.x
  • ReactiveX(RxJava 2.x 和 Reactor)
  • Java 1.9 Flow 类(您会注意到 Reactive Streams 接口(interface)移至 Java 9 中的 Flow 类下方)

ReactiveX 是观察者模式、迭代器模式和函数式编程的最佳思想的组合。它扩展了观察者模式以支持数据和/或事件序列,并添加了运算符,允许您以声明方式将序列组合在一起,同时抽象出对低级线程、同步、线程安全、并发数据结构和非线程等问题的关注。阻塞 I/O。

RxJava 2.0和Reactor基于ReactiveX项目。并且 Spring WebFlux 内部使用了 Reactor。

关于rx-java - Java Spring WebFlux 与 RxJava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com