Jms ActiveMQ或RabbitMQ或ZeroMQ或

Jms ActiveMQ或RabbitMQ或ZeroMQ或,jms,rabbitmq,activemq,message-queue,zeromq,Jms,Rabbitmq,Activemq,Message Queue,Zeromq,我们有兴趣了解ActiveMQ、RabbitMQ和ZeroMQ的利弊。也欢迎提供有关其他有趣的消息队列的信息。的评论中有一些关于Twitter编写自己的消息队列的讨论,这可能很有趣 史蒂夫承受了巨大的负荷和压力 ActiveMQ、RabbitMQ等的测试。 ActiveMQ实际上相当慢(非常慢) 比红隼慢),兔子 总是与太多的人发生冲突 生产者和消费者太少 不过,一开始您可能不会有类似Twitter的负载:)比您想知道的更多的信息: 更新 只是详细说明保罗在评论中补充的内容。2010年后,这

我们有兴趣了解ActiveMQ、RabbitMQ和ZeroMQ的利弊。也欢迎提供有关其他有趣的消息队列的信息。

的评论中有一些关于Twitter编写自己的消息队列的讨论,这可能很有趣

史蒂夫承受了巨大的负荷和压力 ActiveMQ、RabbitMQ等的测试。 ActiveMQ实际上相当慢(非常慢) 比红隼慢),兔子 总是与太多的人发生冲突 生产者和消费者太少


不过,一开始您可能不会有类似Twitter的负载:)

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


更新 只是详细说明保罗在评论中补充的内容。2010年后,这家公司就死了,所以请谨慎阅读。很多东西在三年内都改变了


也许,这一切都取决于您的用例。不要依赖其他人对其用例的描述,请随意将您的用例发布到rabbitmq讨论列表中。在twitter上提问也会得到一些回应。最好的祝愿,亚历克西斯,RabbitMQ和ActiveMQ之间有一个比较。开箱即用,ActiveMQ被配置为保证消息传递——与不太可靠的消息传递系统相比,这会给人留下缓慢的印象。如果愿意,您可以随时更改性能配置,并获得至少与任何其他消息传递系统一样好的性能。至少你有这个选择。论坛和ActiveMQ常见问题解答中有很多关于扩展、性能和高可用性配置的信息。此外,当规范最终确定时,ActiveMQ将支持AMQP1.0以及其他有线格式,如STOMP


ActiveMQ的另一个优点是它是一个Apache项目,因此开发人员社区中存在着多样性,而且它与一家公司无关。

我只能补充我对ActiveMQ的看法,但因为这是最受欢迎的项目之一:

你想用的语言可能很重要。尽管ActiveMQ确实为大多数人提供了一个客户端,但与Java库相比,它们的C#实现还远远不够完整

这意味着一些基本功能是脆弱的(故障转移协议…嗯…在某些情况下失败,没有重新交付支持),而其他功能根本不存在。由于.NET似乎对项目并不那么重要,所以开发相当缓慢,而且似乎没有任何发布计划。主干经常被破坏,所以如果你考虑这个,你可能想考虑对项目的贡献,如果你希望事情继续下去。 还有ActiveMQ本身,它有很多不错的特性,但也有一些非常奇怪的问题。出于稳定性的考虑,我们使用了activemq的Fuse(Progress)版本,但即便如此,您仍需要记住几个奇怪的“bug”:

  • 在某些情况下停止发送消息的代理
  • 日志错误使队列显示不再存在的消息(它们不会传递给使用者,但仍然存在)
  • 优先权仍未落实(自人类开始以来就在问题清单上)
  • 等等等等
总之,如果你能接受它的问题,它是一款相当不错的产品:

A) 在使用.NET时,不要害怕积极参与

B) 用java开发;-)

编辑:我最初的回答非常关注AMQP。我决定重写它,以便在这个话题上提供更广阔的视野

这3种消息传递技术在构建分布式系统方面有不同的方法:

RabbitMQ是AMQP协议(以及Apache Qpid)的主要实现之一。因此,它实现了代理体系结构,这意味着消息在发送到客户机之前在中心节点上排队。这种方法使RabbitMQ非常易于使用和部署,因为路由、负载平衡或持久消息队列等高级方案只需几行代码即可得到支持。然而,由于中心节点增加了延迟,并且消息信封相当大,因此它也使得它的可伸缩性较差,速度“较慢”

ZeroMq是一个非常轻量级的消息传递系统,专为高吞吐量/低延迟场景而设计,就像金融世界中的场景一样。Zmq支持许多高级消息传递场景,但与RabbitMQ相反,您必须通过组合框架的各个部分(例如:套接字和设备)来实现大部分场景。Zmq非常灵活,但在能够完成比在两个对等方之间发送消息更复杂的任务之前,您必须先研究(我建议编写分布式系统的任何人都可以阅读这篇文章,即使您不使用Zmq)

<强> ActuMeq <强>处于中间位置。与Zmq一样,它可以与代理和P2P拓扑一起部署。与RabbitMQ一样,实现高级场景更容易,但通常以原始性能为代价。这是瑞士军刀的信息:-)

最后,所有3种产品:

  • 为最常见的语言(C++、Java、.Net、Python、Php、Ruby等)提供客户端API
  • 拥有强大的文档
  • 他们得到了积极的支持

关于ZeroMQ又名0MQ,正如您可能已经知道的,它是每秒向您发送消息最多的一个(我上次检查时,它们在其ref服务器上的速度约为每秒400万条),但您可能已经知道,该文档不存在。您将很难找到如何启动服务器,更不用说如何使用它们了。我想这就是为什么现在还没有人贡献0万马克的部分原因


玩得开心

很少有应用程序具有与ActiveMQ一样多的调优配置。使ActiveMQ脱颖而出的一些功能包括:

可配置的预取大小。 可配置线程。 可配置故障切换。 可配置的生产商管理通知。 ... 详情见:


如果您对