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


当前回答

这实际上取决于您的用例。

比较0MQ与ActiveMQ或RabbitMQ是不公平的。 ActiveMQ和RabbitMQ是需要安装和管理的消息传递系统。 他们提供了比ZeroMQ更多的功能。他们有真正的持久队列,支持事务等。

ZeroMQ是一个轻量级的面向消息的套接字实现。它也适用于进程内异步编程。在ZeroMQ上运行“企业消息传递系统”是可能的,但您必须自己实现很多工作。

So:

ActiveMQ, RabbitMQ, Websphere MQ和MSMQ是“企业消息队列”

ZeroMQ是一个面向消息的IPC库。

其他回答

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

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


更新

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

很少有应用程序具有ActiveMQ这样多的调优配置。使ActiveMQ脱颖而出的一些特性是:

可配置预取大小。 可配置的线程。 可配置的故障转移。 可配置的管理通知生产者。 ... 细节:

http://activemq.net/blog http://activemq.apache.org

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

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

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

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

我在这里写了关于AMQP, Qpid和ZeroMQ的初步经验:http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/

我的主观意见是,如果您确实需要持久消息传递工具,并且不太担心代理可能成为瓶颈,那么AMQP是不错的选择。此外,c++客户端目前缺少AMQP (Qpid没有赢得我的支持;但不确定ActiveMQ客户端),但可能正在进行中。ZeroMQ可能是另一种方式。