阿比,这一切都取决于你的用例。您可以随意将您的用例发布到rabbitmq-discuss列表,而不是依赖其他人对其用例的说明。在Twitter上询问也会得到一些回复。祝愿,亚历克西斯
如果您对商业实施也感兴趣,您应该看看Nirvana 我的通道 。
Nirvana在金融服务行业中大量用于大规模低延迟交易和价格分配平台。
在企业,Web和移动域中支持各种客户端编程语言。
如果透明HA或负载平衡对您很重要,则群集功能非常先进,值得一看。
Nirvana可以免费下载用于开发目的。
你为什么错过了 麻雀 , 欧椋鸟 , 红隼 , 亚马逊SQS , Beanstalkd , 卡夫卡 , IronMQ ?
消息队列服务器
消息队列服务器有各种语言,Erlang(RabbitMQ),C(beanstalkd),Ruby(Starling或Sparrow),Scala(Kestrel,Kafka)或Java(ActiveMQ)。可以找到简短的概述 这里
的 麻雀 强>
的 欧椋鸟 强>
的 红隼 强>
的 的RabbitMQ 强>
的 Apache ActiveMQ 强>
的 Beanstalkd 强>
的 亚马逊SQS 强>
的 卡夫卡 强>
的 ZMQ 强>
的 EagleMQ 强>
的 IronMQ 强>
我希望这对我们有所帮助。 资源
这真的取决于你的用例。
将0MQ与ActiveMQ或RabbitMQ进行比较是不公平的。 ActiveMQ和RabbitMQ是需要安装和管理的消息系统。 它们提供的功能比ZeroMQ要多得多。他们有真正的持久性队列,支持交易等。
ZeroMQ是一个轻量级的面向消息的套接字实现。它也适用于进程内异步编程。可以在ZeroMQ上运行“企业消息系统”,但您必须自己实施很多。
所以:
ActiveMQ,RabbitMQ,Websphere MQ& MSMQ是“企业消息队列”
ZeroMQ是面向消息的IPC库。
我只能加上关于ActiveMQ的2美分,但因为这是最流行的一个:
您想要写的语言可能很重要。尽管ActiveMQ确实拥有大多数客户端,但与Java库相比,它们的C#实现远非完整。
这意味着一些基本功能是片状的(故障转移协议......好吧......在某些情况下失败,没有重新传送支持)而其他根本就不存在。由于.NET似乎对项目来说并不是那么重要,因此开发速度相当慢,并且似乎没有任何发布计划。 Trunk经常被破坏,所以如果你考虑到这一点,你可能想要考虑为项目做出贡献,如果你想要继续前进的话。
然后有ActiveMQ本身,它有很多很好的功能,但也有一些非常奇怪的问题。出于稳定性原因,我们使用activemq的Fuse(Progress)版本,但即便如此,您仍需要记住几个奇怪的“错误”:
总而言之,如果你能解决它的问题,这是一个非常好的产品:
A)使用.NET时不害怕积极参与 B)在java中开发;-)
关于ZeroMQ又名0MQ,正如您可能已经知道的那样,它是每秒钟可以获得最多消息的消息(上次我检查时,它们的ref服务器上每秒大约有4百万个消息),但正如您可能已经知道的那样,文档不存在。您将很难找到如何启动服务器,更不用说如何使用它们了。我想这部分原因还没有人为0MQ做出贡献。
玩得开心!
我正在使用zeroMQ。我想要一个简单的消息传递系统,我不需要代理的复杂性。我也不想要一个庞大的面向Java的企业系统。
如果你想要一个快速,简单的系统,你需要支持多种语言(我使用C和.net),那么我建议你看看0MQ。
我没有使用过ActiveMQ或RabbitMQ但是使用过ZeroMQ。我在ZeroMQ和ActiveMQ等之间看到的最大区别在于0MQ是无代理的,并且没有内置的可靠性来进行消息传递。如果您正在寻找一个易于使用的消息传递API,支持许多消息模式,传输,平台和语言绑定,那么0MQ绝对值得一看。如果您正在寻找一个完整的消息传递平台,那么0MQ可能不适合该账单。
看到 www.zeromq.org/docs:cookbook 有关如何使用0MQ的大量示例。
我成功地使用0MQ在电力使用监控应用程序中传递消息(参见 http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
ZeroMQ实际上是零排队!这是一个真正的错误!它没有排队,主题,持久性,没有!它只是套接字API的中间件。如果你看起来很酷!别忘了!它不像activeMQ或rabbitmq。
的 编辑: 强> 我的初步答案非常关注AMQP。我决定重写它以提供关于该主题的更广泛的观点。
这3种消息传递技术在构建分布式系统时有不同的方法
的 的RabbitMQ 强> 是AMQP协议的领先实现之一(以及Apache Qpid)。因此,它实现了代理体系结构,这意味着消息在发送到客户端之前在中心节点上排队。这种方法使RabbitMQ非常易于使用和部署,因为只需几行代码就可以支持路由,负载平衡或持久消息队列等高级方案。但是,它也使其可扩展性降低,因为中央节点增加了延迟并且消息包络非常大。
的 ZeroMq 强> 是一个非常轻量级的消息传递系统,专为高吞吐量/低延迟场景而设计,例如您可以在金融领域找到的场景。 Zmq支持许多高级消息传递方案,但与RabbitMQ相反,您必须通过组合框架的各个部分(例如:套接字和设备)来自己实现大部分消息。 Zmq非常灵活,但你必须要学习 80页左右的指南 (我推荐阅读任何编写分布式系统的人,即使你没有使用Zmq),然后才能做比在2个对等体之间发送消息更复杂的事情。
的 ActiveMQ的 强> 处于中间地带。与Zmq一样,它可以与代理和P2P拓扑一起部署。与RabbitMQ一样,实现高级方案更容易,但通常以原始性能为代价。它是瑞士军刀的传讯:-)。
最后,所有3个产品:
在评论中有一些讨论 这篇博文 ,关于Twitter编写自己的消息队列,这可能很有趣。
史蒂夫做了很大的负担和压力 测试ActiveMQ,RabbitMQ等 ActiveMQ实际上非常慢(很多 比Kestrel慢一点,RabbitMQ 持续崩溃太多了 生产者和消费者太少。
你最初可能不会像Twitter一样加载:)
我在这里写了关于AMQP,Qpid和ZeroMQ的初步经验: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
我的主观意见是,如果你真的需要持久的消息传递设备,并且不太关心经纪人可能是瓶颈,那么AMQP就没问题了。此外,AMQP目前缺少C ++客户端(Qpid没有赢得我的支持;但不确定ActiveMQ客户端),但可能正在进行中。 ZeroMQ可能就是这样。
比您想要了解的更多信息:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
只是详细说明保罗在评论中添加的内容。该 上面提到的页面 在2010年之后死了,所以读了一小撮盐。很多东西已经在3年内改变了。
我已经在生产环境中使用ActiveMQ大约3年了。虽然它完成了工作,但排列正常工作且无错误的客户端库版本可能是一个问题。目前正在寻求过渡到RabbitMQ。
很少有应用程序具有与ActiveMQ一样多的调整配置。使ActiveMQ脱颖而出的一些功能包括:
可配置的预取大小。 可配置的线程。 可配置的故障转移。 对生产者的可配置管理通知。 ... 详细信息:
http://activemq.net/blog http://activemq.apache.org