HornetQ vs ActiveMQ vs Qpid的优势

Posted

技术标签:

【中文标题】HornetQ vs ActiveMQ vs Qpid的优势【英文标题】:Advantages of HornetQ vs ActiveMQ vs Qpid 【发布时间】:2011-10-03 14:44:37 【问题描述】:

我正在浏览一个开源消息传递软件,经过一番很好的研究后,我发现了这三个产品。我已经将它们用于初步测试,让它们处理队列和主题的消息,从我所阅读的内容来看,这三个产品对于大多数公司来说都是开源消息传递解决方案的不错选择。我想知道的是,这些产品彼此相比有哪些优势?我特别感兴趣的是消息传递吞吐量,包括持久消息传递吞吐量、安全性、可扩展性、可靠性、支持、路由功能、管理选项(如指标和监控),以及每个程序在大型业务环境中的运行情况。

【问题讨论】:

【参考方案1】:

查看http://queues.io/

来自他们的网站:

我们的目标是创建一个高质量的队列列表,其中包含有关它们的文章、博客文章、幻灯片和视频的集合。阅读链接的文章后,您应该对以下内容有一个很好的了解:每个队列的优缺点,对队列如何工作的基本了解,以及每个队列试图实现的目标。基本上,您应该拥有决定哪个队列最适合您的需求所需的所有信息。

【讨论】:

queues.io 已关闭。转至taskqueues.com【参考方案2】:

“消息传递”涵盖了很多选项 - 并且必须至少有十几种不同类型的技术可能是正确的答案 - 构建了许多生产消息传递环境,使用了各种技术/方法,有更好的理解你的要求会有所帮助。

您需要基于主题的订阅吗?您需要多播传送吗?你需要动态订阅者/听众吗?即使找到可接受的发布者/供稿,您的听众是否会重新查询最佳来源?

您需要保证交货吗?发货确认?您的发布者是否存储了任何未传递的消息,或者您是否需要消息系统自动为您执行此操作?您的提要数据多久会过时 - 例如电子邮件警报可以存储和转发,但实时定价数据仅在短时间内有效(然后可能需要消失而不是引起混乱)

您的网络拓扑有多不稳定?您的订阅者(或发布者)是否希望住在固定地址?还是他们是移动设备?它们是否会出现在需要注册并可能施加路由限制的更复杂的互联网络拓扑上?如果是的话,知道这些拓扑变化的频率吗?

你只需要一个java接口吗?是否有任何订阅者要集成到 Windows 组件中(例如将 feed 集成到 excel 中)?

如果您只对比较您命名的类似产品的体验感兴趣,那么您可能已经考虑过这些主题。

就产品而言,根据我的经验,Tibco 在吞吐量和可扩展性方面仍然处于领先地位,尤其是在实时环境中。 ibm MQ 将是下一个,尤其是在存储转发架构中。使用这两种产品,您可以获得一定程度的支持,您可以证明押注业务系统的基本部分是合理的。这两者已经存在了几十年是有原因的。

另一个经常被忽视的选项是 Tuxedo - 它不仅提供消息传递,而且还提供了无可比拟的经过验证的事务功能。 Oracle 将继续致力于此产品,并且再次提供的支持水平是首屈一指的。

我喜欢开源解决方案,并且总是很高兴免费找到生产质量的软件 - 但如果您正在创建业务基础架构的基本部分,那么活跃的社区可能仍然无法表明某个特定的自愿项目是否是最佳选择。

我的 2c 价值。希望有帮助。

【讨论】:

我认为 IBMMQ 没有你说的那么快。我无法提供太多数据,但据我所知 IBMMQ 并不以速度快而著称。 同意 - 如果速度是您主要关心的问题,您不会选择 MQ - 当 Tibco 停止销售 ETX 时,它为快速+保证留下了一个空缺。如果对您来说快速意味着即使是最大的网络也需要几毫秒,那么 afaik Tibco RV 仍然是最好的选择。 HornetQ 在其本机协议上更快。我可以向你保证。消息系统中的速度不是针对单个生产者/消费者来衡量的。您需要扩大规模才能生成有效的报告。 这里是具有 4GB 内存的 2-CPU Linux 机器的性能统计数据:public.dhe.ibm.com/software/integration/support/supportpacs/… 其他平台的统计数据位于 ibm.co/SupptPacs 在名称为 MP** 的条目下。 WebSphere MQ 可以调整为有利于速度或可靠性,并且在默认配置中提供了两者的平衡。完全披露,我是一名专门研究 WMQ 的 IBM 人员。【参考方案3】:

首先,我不是这方面的专家,但也许我可以给你一些思考提示。

ActiveMQ 和 Qpid 都在 Apache 的保护伞下并且是消息队列。但 Qpid 是 AMQP 规范的一种实现。

AMQP 是在线级别的协议规范,因此可以与其他 AMQP 消息队列(例如 RabbitMQ)交换消息。

ActiveMQ 和 HornetQ 是可以与 JMS API 一起使用的队列。 Java 消息服务是 API 级别的规范。

但您也可以选择通过 JMS API 访问 Qpid。 我认为性能是次要的想法。拥有一个活跃的社区更为重要。

【讨论】:

您可以将 HornetQ 与 HornetQ 核心 API 一起使用。 HornetQ 是多协议的,在不久的将来有可能实现 AMQP。【参考方案4】:

http://x-aeon.com/wp/2013/04/10/a-quick-message-queue-benchmark-activemq-rabbitmq-hornetq-qpid-apollo/

基准测试包含一些供您决定的性能数据,包括持久性和暂时性结果。

【讨论】:

以上是关于HornetQ vs ActiveMQ vs Qpid的优势的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ 到 HornetQ 导致异常

ActiveMQ:Openwire vs AMQP vs Stomp

Websockets - Tomcat+Spring+ActiveMQ vs ActiveMQ

Cometd vs ActiveMQ 用于实时 Web 应用程序的服务器端推送

Qt5.11.2 VS2015编译activemq发送程序 _ITERATOR_DEBUG_LEVEL错误和崩溃解决

openwire vs amqp,哪个会更好