RX与rabbitmq或zeromq等消息队列的比较?[已关闭]

laik7k3q  于 2022-11-23  发布在  RabbitMQ
关注(0)|答案(2)|浏览(182)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

八年前就关门了。
Improve this question
我对这些高级并发范例还很陌生,而且我已经开始使用scala RX绑定,所以我想了解RX与RabbitMQ或ZeroMQ等消息队列有什么不同?
它们似乎都使用订阅/发布模式。在某个地方,我看到一条关于RX在RabbitMQ上运行的推文。
有人能解释一下RX和消息队列之间的区别吗?为什么我会选择其中一个而不是另一个?一个可以替代另一个吗?或者它们是互斥的吗?它们在哪些方面重叠?

ax6ht2ek

ax6ht2ek1#

值得点击[system.reactive]标签上的learn more链接,我们在那里放了很多信息!
从介绍中可以看出,Rx不是一种消息队列技术:
Reactive Extensions(Rx)是一个使用可观察序列和LINQ样式查询操作符来编写异步和基于事件的程序的库。System. Reactive是通过该库使用的根命名空间。使用Rx,开发人员使用LINQ操作符来表示异步数据流,并使用调度程序来参数化异步数据流中的并发性。简单地说,Rx =可观察序列+LINQ+调度程序。
因此,Rx和消息队列实际上是截然不同的技术,可以很好地相互补充。一个经典的例子是股票价格报价器服务--这可能是通过消息队列提供的,但随后由Rx转换为分组、聚合和过滤价格。
您可以更进一步:就像Entity Framework将IQueryable<T>查询转换为直接在数据库上运行的SQL一样,您可以创建提供程序将Rx IQbservable<T>查询转换为原生查询-例如,Where过滤器可以利用许多消息队列技术中存在的原生过滤功能来直接应用过滤器。
这就容易多了,消息队列消息被送入Rx Subject,以便将来自队列的传入消息转换为Rx流,以便在客户端中轻松使用,这种情况并不少见。Rx还广泛用于GUI中,以处理客户端事件(如按钮按下和文本框更改),从而使传统上困难的场景(如拖放和文本自动通过异步服务器查询来完成操作会非常容易。有一个很好的实验室,涵盖了后面的场景here。它是针对Rx的早期版本编写的,但仍然非常相关。
我建议您观看Bart de Smet的视频演示,了解精彩介绍:Curing Your Event Processing Blues with Reactive Extensions (Rx)-包括经典的Rx演示,它通过Kinect的实时提要编写查询来解释挥手!

gab6jxml

gab6jxml2#

有人能解释一下RX和其他消息队列之间的区别吗?
Rx只是对事件(任何类型的事件!)的抽象。从分布式队列接收消息一个事件,并且通常,ZeroMQ / RabbitMQ解决方案经常必须使用和合并相当多的不同事件,这是Rx非常擅长的。
所以,Rx常常使编写ZeroMQ / RabbitMQ应用程序比其他方式 * 容易 * 得多:)

相关问题