我们正在评估其中一个项目的反应式编程框架。我刚刚学习了vert.x教程。我检查了一下RxJava的介绍。 RxJava似乎更接近CompletableFuture。但是,尽管存在底层模式,RxJava和Vert.x都可以访问非阻塞编程。我很困惑他们之间有什么区别。在这方面,我将不胜感激。
答案 0 :(得分:22)
VertX是异步服务器的服务器框架,而RxJava是异步计算的框架。 VertX支持RxJava,许多人一起使用它们。
如果您要创建Web应用程序并想要可扩展的后端,请使用VertX,可能使用RxJava。但是如果你在另一个平台上,只需使用RxJava。
一起使用VertX和RxJava的更多信息答案 1 :(得分:3)
在自己的网站上
Eclipse Vert.x是用于在JVM上构建响应式应用程序的工具包。
它定义了用于编写异步网络应用程序的基本API(例如:数据库连接,监视,身份验证,服务发现,集群等)
在内部,它基于Netty项目,该项目是JVM的高性能异步网络库。但是,它提供了更易于使用且仍具有较高性能的高级API。
您可以单独使用基于Vert.x回调的API,但Vert.x还可在后台使用RxJava实现等效的Rxified API。这提供了一个将Vert.x模块集成到RxJava应用程序中的绝佳平台。
Vert.x是多语言的,因为它支持许多其他基于JVM的语言API,例如Kotlin,Groovy,Ruby,Scala和Ceylon。而且,由于Vert.x是事件驱动和基于消息的,因此它还提供了一个JavaScript API,非常有用,可以将前端与后端集成。
Vert.x提供流畅的HTTP端点和路由配置,这些配置由实现业务逻辑的处理程序支持。但是真正的神经系统是事件总线,它充当所有Vert.x本地或分布式组件的电信提供商。
此事件总线支持:
事件总线受以下支持:
集群管理器,例如Hazelcast,InfiniSpan,Ignite或ZooKeeper,它们通过更高级别的API访问权限来提供分布式地图,锁和计数器。
Vert.x服务发现API为底层复杂寻址方案提供基于地址的抽象
支持SSL的TCP服务访问点,用于双向安全通信和最高性能
最后,Vert.x可以单独用于开发功能完善的应用程序,也可以与SpringBoot,Fibres等框架一起使用。
希望这会有所帮助,
Softjake
答案 2 :(得分:1)
Vert.x是一堆模块和扩展,统称为工具箱。核心模块包含Web服务器和称为Verticle的并发模型。 RxJava是ReactiveX的Java实现。两者都基于事件驱动原理,但是Web服务器无法与RxJava相提并论。
因此,我想这里的基本比较是 Verticle与RxJava 之间。
Verticle 是一个类,其状态只能通过事件总线从外部访问。因此,消息以单线程方式依次进入队列并弹出。这个想法是创建一个线程安全的环境,而不必处理Java臭名昭著的锁定机制。在并发术语中,这种结构也称为Actor。
何时使用:每当需要使用Java的synchronized
块时。多个线程需要访问类变量的情况(即竞争条件)是您可以为Verticle或Actor同步删除的情况。在Vert.x中,无需运行Web服务器就可以使用Verticle。
要解释 RxJava 对数组或列表的思考。您通常在清单上做什么?循环播放它可以操作内容,过滤,合并等等。如今,此类操作可以使用高阶函数(例如map
,filter
,zip
等)轻松完成。RxJava的用例是列表是异步的。它采用相同的功能编程原理来处理流或实时数据。
何时使用:要处理流时。例如,将电影流中的帧与其他流中的字幕进行匹配(毕竟,RxJava是由Netflix创建的)。或者从几个股票行情自动报价器进行实时分析。