RX vs消息队列如rabbitmq或zeromq?

 823825lml 发布于 2023-02-08 15:13

我对这些高级并发范例很陌生,我已经开始使用scala RX绑定了.所以我试图理解RX与RabbitMQ或ZeroMQ等消息队列的区别?

他们似乎都使用订阅/发布范例.在某个地方,我看到一条关于RX在RabbitMQ上运行的推文.

有人可以解释RX和消息队列之间的差异吗?为什么我会选择一个而不是另一个?可以用一个替代另一个,还是互相排斥?它们在哪些区域重叠?

2 个回答
  • 值得单击标签上的了解更多链接[system.reactive],我们在那里提供了相当多的信息!

    从介绍中你可以看到Rx不是消息排队技术:

    Reactive Extensions(Rx)是一个库,用于使用可观察序列和LINQ样式查询运算符组合异步和基于事件的程序.System.Reactive是通过库使用的根命名空间.使用Rx,开发人员使用LINQ运算符表示异步数据流,并使用调度程序参数化异步数据流中的并发性.简单地说,Rx = Observables + LINQ + Schedulers.

    因此,Rx和消息队列是真正独特的技术,可以相互补充.一个典型的例子是股票价格自动收报机服务 - 这可能通过消息排队提供,但随后由Rx转换为分组,汇总和过滤价格.

    您可以走得更远:就像实体框架将IQueryable<T>查询转换为直接在数据库上运行的SQL一样,您可以创建将Rx IQbservable<T>查询转换为本机查询的提供程序- 例如,Where过滤器可以利用许多消息队列技术中存在的本机过滤功能来应用直接过滤.这是相当多的工作,但很难.

    将消息队列消息馈送到Rx中Subject以便将来自队列的传入消息转换为Rx流以便在客户端中轻松消费,这样更容易,并且并不罕见.Rx还广泛用于GUI中,用于处理客户端事件,如按钮按下和文本框更改,以便通过异步服务器查询使拖放和文本自动完成等传统上困难的场景变得非常容易.有一个关于实验室良好的手覆盖后的场景在这里.它是针对Rx的早期版本编写的,但仍然非常相关.

    我建议看看Bart de Smet的这个视频演示,进行精彩的介绍:使用Reactive Extensions(Rx)治疗你的事件处理蓝调 - 包括经典的Rx演示,它通过Kinect的实时源写一个查询来解释挥手!

    2023-02-08 15:15 回答
  • 有人可以解释RX和这些其他消息队列之间的差异吗?

    Rx只是对事件的抽象(任何类型的事件!).从分布式队列接收消息一个事件,通常,ZeroMQ/RabbitMQ解决方案通常必须使用和组合不同的事件,Rx非常擅长.

    通常情况下,Rx使得编写ZeroMQ/RabbitMQ应用程序比其他方式更容易 :)

    2023-02-08 15:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有