我们很想听听ActiveMQ,RabbitMQ和ZeroMQ的优缺点。也欢迎提供有关任何其他有趣消息队列的信息。
我们很想听听ActiveMQ,RabbitMQ和ZeroMQ的优缺点。也欢迎提供有关任何其他有趣消息队列的信息。
Answers:
编辑:我最初的答案非常关注AMQP。我决定重写它以提供对该主题的更广泛的了解。
这三种消息传递技术在构建分布式系统上具有不同的方法:
RabbitMQ是AMQP协议(以及Apache Qpid)的主要实现之一。因此,它实现了代理体系结构,这意味着消息在发送给客户端之前先在中央节点上排队。这种方法使RabbitMQ易于使用和部署,因为仅几行代码就支持路由,负载平衡或持久消息队列等高级方案。但是,这也使它的可伸缩性和“速度变慢”了,因为中央节点增加了延迟,并且消息包络很大。
ZeroMq是一种非常轻巧的消息传递系统,专门为高吞吐量/低延迟的方案(如您在金融界发现的方案)设计。Zmq支持许多高级消息传递场景,但是与RabbitMQ相反,您必须自己通过组合框架的各个部分(例如:套接字和设备)来实现它们中的大多数。Zmq非常灵活,但是您必须先阅读该指南的80页左右的内容(即使您不使用Zmq,我也建议阅读该指南的读者,即使您不使用Zmq,也要阅读该指南),然后才能做比发送消息更复杂的事情在2个同行之间。
ActiveMQ位于中间。与Zmq一样,它可以与代理和P2P拓扑一起部署。像RabbitMQ一样,实现高级方案更容易,但是通常以原始性能为代价。这是消息传递的瑞士军刀:-)。
最后,所有3个产品:
您为什么想念Sparrow,Starling,Kestrel,Amazon SQS,Beanstalkd,Kafka和IronMQ?
消息队列服务器
消息队列服务器支持多种语言,包括Erlang(RabbitMQ),C(beanstalkd),Ruby(Starling或Sparrow),Scala(Kestrel,Kafka)或Java(ActiveMQ)。简短的概述可以在这里找到
麻雀
史达琳
红est
兔子MQ
Apache ActiveMQ
豆茎
亚马逊SQS
卡夫卡
ZMQ
EagleMQ
IronMQ
我希望这对我们有帮助。 资源
这确实取决于您的用例。
将0MQ与ActiveMQ或RabbitMQ进行比较是不公平的。ActiveMQ和RabbitMQ是消息传递系统,需要安装和管理。他们提供的功能远不止ZeroMQ。它们具有真正的持久队列,对事务的支持等。
ZeroMQ是一种轻量级的面向消息的套接字实现。它还适用于进程内异步编程。可以在ZeroMQ上运行“企业消息系统”,但是您必须自己实施很多工作。
所以:
ActiveMQ,RabbitMQ,Websphere MQ和MSMQ是“企业消息队列”
ZeroMQ是面向消息的IPC库。
我没有使用过ActiveMQ或RabbitMQ,但已经使用了ZeroMQ。正如我所看到的,ZeroMQ和ActiveMQ等之间的最大区别是0MQ是无代理的,并且没有内置的消息传递可靠性。如果您正在寻找一种易于使用的,支持许多消息传递模式,传输,平台和语言绑定的消息传递API,那么0MQ绝对值得一看。如果您正在寻找功能完善的消息传递平台,那么0MQ可能不适合您。
有关如何使用0MQ的大量示例,请参见www.zeromq.org/docs:cookbook。
我成功使用0MQ在用电量监控应用程序中传递了消息(请参阅http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/)
关于ActiveMQ,我只能加上2美分,但这是最受欢迎的一种:
您要使用的语言可能很重要。尽管ActiveMQ确实有大多数客户端,但是与Java库相比,它们的C#实现远非完整。
这意味着某些基本功能是不稳定的(故障切换协议,在某些情况下会失败,没有重新交付支持),而其他功能根本就不存在。由于.NET在项目中似乎并不那么重要,因此开发速度相当缓慢,而且似乎没有任何发布计划。Trunk经常损坏,因此,如果您考虑这一点,那么如果您希望事情继续进行,则可能要考虑为该项目做出贡献。
然后是ActiveMQ本身,它具有很多不错的功能,但也有一些非常奇怪的问题。出于稳定性的原因,我们使用activemq的Fuse(Progress)版本,但是即使如此,您也要记住几个怪异的“ bug”:
总而言之,如果您可以忍受它的问题,那将是一个非常不错的产品:
A)使用.NET时不怕积极参与
B)用Java开发;-)
在http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/上提供了RabbitMQ ActiveMQ和QPID的功能和性能比较。
我个人已经尝试了以上三种方法。根据我的观点,RabbitMQ是最好的性能选择,但它没有故障转移和恢复选项。ActiveMQ具有最多的功能,但速度较慢。
更新: HornetQ也是您可以考虑的一个选项,它是JMS Complaint,如果您正在寻找基于JMS的解决方案,它比ActiveMQ更好。
很少有应用程序具有与ActiveMQ一样多的调整配置。使ActiveMQ脱颖而出的一些功能包括:
可配置的预取大小。可配置的线程。可配置的故障转移。向生产者的可配置管理通知。…的详细信息:
Abie,一切都取决于您的用例。不用依赖别人对他们用例的描述,可以将您的用例发布到Rabbitmq-discuss列表中。在Twitter上提问也会得到一些回应。最好的祝福,亚历克西斯
如果您也对商业实现感兴趣,那么应该从my-channels看一下Nirvana 。
Nirvana在金融服务行业中大量用于大型低延迟交易和价格分配平台。
在企业,Web和移动域中支持多种客户端编程语言。
群集功能非常先进,如果透明HA或负载平衡对您很重要,则值得一看。
出于开发目的,可以免费下载Nirvana。