【推荐】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
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3149068