我们有兴趣听听ActiveMQ vs RabbitMQ vs ZeroMQ的优缺点。还欢迎提供有关任何其他有趣的消息队列的信息。


当前回答

我没有使用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/)

其他回答

为什么你错过了Sparrow, Starling, Kestrel, Amazon SQS, Beanstalkd, Kafka, IronMQ ?

消息队列服务器

消息队列服务器支持多种语言,Erlang (RabbitMQ)、C (beanstalkd)、Ruby (Starling或Sparrow)、Scala (Kestrel、Kafka)或Java (ActiveMQ)。一个简短的概述可以在这里找到

麻雀

作者:亚历克斯·麦考 Sparrow是一个用Ruby编写的轻量级队列,它“讲memcache”

燕八哥

布莱恩·库克(Blaine Cook)在Twitter上写道 Starling是基于MemCached的消息队列服务器 Ruby编写 在内存中存储作业(消息队列) 文档:一些好的教程,例如关于八哥鸟和工作的railscast或关于八哥鸟的这篇博客文章

红隼

罗比·波因特著 用Scala编写的Starling克隆(将Starling从Ruby移植到Scala) 队列存储在内存中,但记录在磁盘上

RabbitMQ

RabbitMQ是Erlang中的消息队列服务器 在内存中存储作业(消息队列)

Apache ActiveMQ

ActiveMQ是Java中的开源消息代理

Beanstalkd

由Philotic, Inc.编写,以提高Facebook应用程序的响应时间 内存工作队列服务主要是用C语言编写的 Docu: http://nubyonrails.com/articles/about-this-blog-beanstalk-messaging-queue

Amazon SQS

亚马逊简单排队服务

卡夫卡

在LinkedIn上用Scala编写 LinkedIn用于卸载所有页面和其他视图的处理 默认使用持久化,对热数据使用OS磁盘缓存(启用持久化后吞吐量比上述任何一个都高) 支持在线和离线处理

ZMQ

作为并发框架的套接字库 对于集群产品和超级计算来说,比TCP更快 在inproc, IPC, TCP和组播之间传递消息 通过fanout, pubsub, pipeline, request-reply连接n到n 用于可伸缩的多核消息传递应用程序的异步I/O

鹰云

EagleMQ是一个开源、高性能、轻量级的队列管理器。 C语言编写 将所有数据存储在内存中并支持持久性。 它有自己的协议。支持使用队列、路由和通道。

IronMQ

IronMQ Go语言编写 全管理队列服务 云版本和内部版本都可用

我希望这对我们有所帮助。 源

在这篇博文的评论中有一些关于Twitter编写他们自己的消息队列的讨论,这可能会很有趣。

史蒂夫承受了很大的负荷和压力 ActiveMQ, RabbitMQ等的测试。 ActiveMQ实际上相当慢(非常慢) 比Kestrel慢),RabbitMQ 总是因为太多而崩溃 生产者和太少的消费者。

你可能不会有像twitter一样的初始加载:)

比你想知道的更多的信息:

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes


更新

只是在详细说明保罗在评论中补充的内容。上面提到的页面在2010年之后就消失了,所以阅读时要有所保留。3年里很多东西都变了。

关于ZeroMQ(又名0MQ),正如您可能已经知道的那样,它是每秒钟获得最多消息的一种(上次我检查时,在其引用服务器上大约是每秒钟400万条消息),但是您可能也已经知道,不存在相关文档。您将很难找到如何启动服务器,更不用说如何使用它们了。我想这就是为什么还没有人贡献0MQ的部分原因。

玩得开心!

文中对RabbitMQ ActiveMQ和QPID的特性和性能进行了比较 http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/

就我个人而言,以上三种方法我都试过了。在我看来,RabbitMQ的性能是最好的,但是它没有故障转移和恢复选项。ActiveMQ拥有最多的特性,但速度较慢。

更新: HornetQ也是一个你可以考虑的选项,它是JMS投诉,如果你正在寻找一个基于JMS的解决方案,一个比ActiveMQ更好的选择。