ActiveMQ或RabbitMQ或ZeroMQ或[关闭]

咱们有兴趣听听ActiveMQ与RabbitMQ和ZeroMQ的优缺点。 还欢迎有关任何其余有趣的消息队列的信息。 java


#1楼

还有的RabbitMQ和ActiveMQ的之间的比较在这里 。 开箱即用,ActiveMQ配置为保证消息传递 - 与不太可靠的消息传递系统相比,这会给人留下缓慢的印象。 若是您愿意,您能够随时更改性能配置,并得到至少与其余任何邮件系统同样的性能。 至少你有这个选择。 有关论坛和ActiveMQ常见问题解答的大量信息,用于配置扩展,性能和高可用性。 此外,ActiveMQ将在规范最终肯定时支持AMQP 1.0,以及其余有线格式,如STOMP。 apache

ActiveMQ的另外一个好处是它的Apache项目,所以开发人员社区存在多样性 - 并且它与一家公司无关。 api


#2楼

我只能加上关于ActiveMQ的2美分,但由于这是最流行的一个: 服务器

您想要写的语言可能很重要。 尽管ActiveMQ确实拥有大多数客户端,但与Java库相比,它们的C#实现远非完整。 框架

这意味着一些基本功能是片状的(故障转移协议......好吧......在某些状况下失败,没有从新传递支持)而其余根本就不存在。 因为.NET彷佛对项目来讲并非那么重要,所以开发速度至关慢,而且彷佛没有任何发布计划。 Trunk常常被破坏,因此若是你考虑到这一点,你可能想要考虑为项目作出贡献,若是你想要继续前进的话。 分布式

而后有ActiveMQ自己,它有不少很好的功能,但也有一些很是奇怪的问题。 出于稳定性缘由,咱们使用activemq的Fuse(Progress)版本,但即使如此,您仍须要记住几个奇怪的“错误”: 性能

  • 在某些状况下中止发送消息的经纪人
  • 日志错误使队列显示再也不存在的消息(它们不会传递给消费者,但仍然)
  • 优先权仍未实施(自人类开始以来在问题列表中)
  • 等等

总而言之,若是你能解决它的问题,这是一个很是好的产品: 学习

A)使用.NET时不惧怕积极参与
B)在java中开发;-) spa


#3楼

编辑:个人初步答案很是关注AMQP。 我决定重写它以提供关于该主题的更普遍的观点。 .net

这3种消息传递技术在构建分布式系统时有不一样的方法

RabbitMQ是AMQP协议的领先实现之一(以及Apache Qpid)。 所以,它实现了代理体系结构,这意味着消息在发送到客户端以前在中心节点上排队。 这种方法使RabbitMQ很是易于使用和部署,由于只需几行代码就能够支持路由,负载平衡或持久消息队列等高级方案。 可是,它也使其可扩展性下降,“慢”,由于中央节点增长了延迟而且消息包络很是大。

ZeroMq是一个很是轻量级的消息系统,专为高吞吐量/低延迟场景而设计,例如您能够在金融领域找到的场景。 Zmq支持许多高级消息传递方案,但与RabbitMQ相反,您必须经过组合框架的各个部分(例如:套接字和设备)来本身实现大部分消息。 Zmq很是灵活,但你必须学习80页左右的指南 (我推荐阅读任何编写分布式系统的人,即便你不使用Zmq),而后才能作更复杂的事情而不是发送消息两个同伴之间。

ActiveMQ处于中间地带。 与Zmq同样,它能够与代理和P2P拓扑一块儿部署。 与RabbitMQ同样,实现高级方案更容易,但一般以原始性能为代价。 这是消息传递的瑞士军刀:-)。

最后,全部3个产品:

  • 有最经常使用语言的客户端api(C ++,Java,.Net,Python,Php,Ruby,...)
  • 有很强的文档
  • 积极支持

#4楼

关于ZeroMQ又名0MQ,正如您可能已经知道的那样,它是每秒钟能够得到最多消息的消息(上次我检查时,它们的ref服务器上每秒大约有4百万个消息),但正如您可能已经知道的那样,文档不存在。 您将很难找到如何启动服务器,更不用说如何使用它们了。 我想这部分缘由尚未人为0MQ作出贡献。

玩得开心!


#5楼

不多有应用程序具备与ActiveMQ同样多的调整配置。 使ActiveMQ脱颖而出的一些功能包括:

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

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

相关文章
相关标签/搜索