我们有兴趣听听ActiveMQ vs RabbitMQ vs ZeroMQ的优缺点。还欢迎提供有关任何其他有趣的消息队列的信息。
当前回答
很少有应用程序具有ActiveMQ这样多的调优配置。使ActiveMQ脱颖而出的一些特性是:
可配置预取大小。 可配置的线程。 可配置的故障转移。 可配置的管理通知生产者。 ... 细节:
http://activemq.net/blog http://activemq.apache.org
其他回答
为什么你错过了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语言编写 全管理队列服务 云版本和内部版本都可用
我希望这对我们有所帮助。 源
There's a comparison between RabbitMQ and ActiveMQ here. Out of the box, ActiveMQ is configured to guarantee message delivery - which can give the impression its slow compared to less reliable messaging systems. You can always change the configuration for performance if you wish and get at least as good performance as any other messaging system. At least you have that option. There's a lot of information on the forums and the ActiveMQ FAQ for configuration for scaling, performance and high availability. Also, ActiveMQ will support AMQP 1.0 when the spec is finalized, together with other wire formats, like STOMP.
ActiveMQ的另一个优点是它是一个Apache项目,所以开发者社区是多样化的——而且它不局限于一家公司。
比你想知道的更多的信息:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
更新
只是在详细说明保罗在评论中补充的内容。上面提到的页面在2010年之后就消失了,所以阅读时要有所保留。3年里很多东西都变了。
编辑:我最初的回答非常关注AMQP。我决定重写它,以提供一个更广泛的观点关于这个主题。
这3种消息传递技术在构建分布式系统方面有不同的方法:
RabbitMQ is one of the leading implementation of the AMQP protocol (along with Apache Qpid). Therefore, it implements a broker architecture, meaning that messages are queued on a central node before being sent to clients. This approach makes RabbitMQ very easy to use and deploy, because advanced scenarios like routing, load balancing or persistent message queuing are supported in just a few lines of code. However, it also makes it less scalable and “slower” because the central node adds latency and message envelopes are quite big.
ZeroMq is a very lightweight messaging system specially designed for high throughput/low latency scenarios like the one you can find in the financial world. Zmq supports many advanced messaging scenarios but contrary to RabbitMQ, you’ll have to implement most of them yourself by combining various pieces of the framework (e.g : sockets and devices). Zmq is very flexible but you’ll have to study the 80 pages or so of the guide (which I recommend reading for anybody writing distributed system, even if you don’t use Zmq) before being able to do anything more complicated than sending messages between 2 peers.
ActiveMQ处于中间地带。与Zmq一样,它可以与代理和P2P拓扑一起部署。像RabbitMQ一样,它更容易实现高级场景,但通常是以牺牲原始性能为代价的。这是信息传递的瑞士军刀:-)。
最后,全部3个产品:
为最常见的语言(c++, Java, .Net, Python, Php, Ruby,…)提供客户端api 有强有力的文档 得到积极支持
我用的是zeroMQ。我想要一个简单的消息传递系统,我不需要复杂的代理。我也不想要一个巨大的面向Java的企业系统。
如果你想要一个快速、简单的系统,并且你需要支持多种语言(我使用C和。net),那么我建议你看看0MQ。