拉比式消息代理、主动式消息代理和零式消息代理的简明比较


我找到了对三个众所周知的开源消息队列的一个很好的、简单的、简短的描述——主动式消息队列、拉比式消息队列和零式消息队列。这些描述特别有用,因为它们对三个经纪人进行了有用的比较。它们写于09年,但去年底被编辑。


功劳归于JulienEndy Tjahjono对于上的这些描述SO


RabbitMQ是AMQP协议(和Apache Qpid一起)的主要实现之一。因此,它实现了一个代理架构,这意味着消息在被发送到客户端之前在一个中央节点上排队。这种方法使得RabbitMQ非常容易使用和部署,因为只需几行代码就可以支持路由、负载平衡或持久消息队列等高级场景。然而,这也使得它的可伸缩性降低,并且“变慢”,因为中央节点增加了延迟,并且消息信封相当大。

零MQ是一个非常轻量级的消息传递系统,专门为高吞吐量/低延迟场景而设计,就像您在金融界可以找到的一样。Zmq支持许多高级消息传递场景,但是与RabbitMQ相反,您必须通过组合框架的不同部分(例如:套接字和设备)自己实现其中的大部分。Zmq非常灵活,但是你必须先学习80页左右的指南(我建议任何编写分布式系统的人阅读,即使你不使用Zmq),然后才能做任何更复杂的事情,比如在两个对等体之间发送消息。

ActiveMQ在中间地带。像Zmq一样,它可以与代理和P2P拓扑一起部署。像RabbitMQ一样,实现高级场景更容易,但通常是以原始性能为代价的。这是传递信息的瑞士军刀。

最后,所有3种产品:
拥有最常用语言(C++、Java、)的客户端应用编程接口。Net、Python、Php、Ruby……)
拥有强有力的文件
得到积极支持