ActiveMQ或RabbitMQ或ZeroMQ或[关闭]

浪尽此生 提交于 2019-12-28 20:54:19

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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


#1楼

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

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


#2楼

我只能加上关于ActiveMQ的2美分,但因为这是最流行的一个:

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

这意味着一些基本功能是片状的(故障转移协议......好吧......在某些情况下失败,没有重新传递支持)而其他根本就不存在。 由于.NET似乎对项目来说并不是那么重要,因此开发速度相当慢,并且似乎没有任何发布计划。 Trunk经常被破坏,所以如果你考虑到这一点,你可能想要考虑为项目做出贡献,如果你想要继续前进的话。

然后有ActiveMQ本身,它有很多很好的功能,但也有一些非常奇怪的问题。 出于稳定性原因,我们使用activemq的Fuse(Progress)版本,但即便如此,您仍需要记住几个奇怪的“错误”:

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

总而言之,如果你能解决它的问题,这是一个非常好的产品:

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


#3楼

编辑:我的初步答案非常关注AMQP。 我决定重写它以提供关于该主题的更广泛的观点。

这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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!