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


当前回答

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

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

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

其他回答

编辑:我最初的回答非常关注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 有强有力的文档 得到积极支持

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

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

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

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

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

如果您也对商业实现感兴趣,您应该看看my-channels中的Nirvana。

Nirvana在金融服务行业中被广泛用于大规模低延迟交易和价格分销平台。

它支持企业、网络和移动领域的各种客户端编程语言。

集群功能非常高级,如果透明的HA或负载平衡对您很重要,那么值得一试。

出于开发目的,Nirvana可以免费下载。

阿比,这都取决于你的用例。与其依赖别人对用例的描述,不如自由地将你的用例发布到rabbitmq讨论列表中。在推特上提问也会得到一些回应。祝福你,亚历克西斯