哪个嵌入式消息系统更好 - ActiveMQ还是HornetQ?

35

我希望您能就哪个消息传递系统更易于管理、有较少的陷阱或需要了解和避免的魔法操作、具有较少的总体依赖性、以及更易于使用等方面提供一些常规指针和意见。

  • 更易于管理
  • 具有较少的陷阱或需了解和避免的魔法操作
  • 具有较少的总体依赖性
  • 易于使用。

我没有用过HornetQ,但我可以说ActiveMQ可能是这四种情况。如果您正在使用JBoss,则HornetQ可能具有更好的集成性。?? - Peter Lawrey
2
我想在不使用Jboss AS的情况下使用它。无论是否使用JBossAS,都不应该影响其关键可观测特性。 - mP.
如果你正在寻找有人能够给出一些帮助你做出决定的建议,那么选择ActiveMQ(除了一些Spring依赖问题)绝对不会错。我在一个遍布全球的大型投资银行中使用它已经超过两年,并且只遇到过一个重要问题,而这个问题通过简单的升级就得以解决。 - alexr
我们在测试套件中嵌入AMQ也很容易。 - alexr
我认为更有用的方法是清楚地了解这两者的区别。如果有人知道每个目标问题的目标,那就更好了。 - will
5个回答

48

首先,我有偏见。我是HornetQ项目的创始人,尽管我现在已经不再参与其中。

为什么选择HornetQ而不是ActiveMQ?以下是一些很好的理由:

  1. HornetQ比ActiveMQ快得多. http://community.jboss.org/wiki/HornetQPerformance

    事实上, HornetQ是市场上速度最快的企业消息系统。至少在我们去年对市场上十一家左右JMS实现进行测试时是这样。(我们对其进行了测试)

  2. 功能。 HornetQ具有您预期要看到的完整的“企业”功能集。功能列表在这里 http://community.jboss.org/wiki/HornetQFeatures

    您会发现HornetQ与ActiveMQ中的大多数功能相当,还有其他一些在ActiveMQ中找不到的功能。

  3. 群集最近已进行全面改版,因此非常稳定。如果您对群集有任何问题,请使用论坛。 HornetQ团队将乐意回应任何被察觉到的问题。

  4. 许多高知名度的公司,包括大型金融机构和其他品牌,如last.fm都在生产中使用。

  5. 足够可靠,成为JBoss AS 7的核心消息技术。这是世界上最受欢迎的Java应用服务器的最新版本。

  6. 协议无关架构。 HornetQ不像ActiveMQ是围绕JMS构建的。在HornetQ中,核心服务端是协议/API不可知的 - 它是一个通用的消息服务器。各种协议/API(如STOMP/JMS/REST/Websockets等)作为通用核心的薄适配器添加。这使得它更加灵活。


35

更易管理

HornetQ具有清晰的管理API,非常易于使用。

较少需要了解和避免的技巧或神奇功能

HornetQ专为嵌入式情况而设计。非常非常容易将其集成到您的代码中。实际上,您只需不到10行代码即可完成。

总体依赖性较少

HornetQ上的所有内容都是模块化的。对HornetQ的唯一必需依赖是Netty,它是网络提供程序。

简单易用

HornetQ非常易于使用。具有清晰的API,并且文档非常全面。

您无需购买任何书籍即可使用HornetQ。所有文档都可以在HornetQ网站上免费获得。


感谢Clebert的回答和对HQ的辛勤工作!我忘记了我的问题,但您的笔记是正确的。一个人越深入了解HQ,就越能欣赏它的酷炫之处。 - mP.
1
我已经尝试了HornetQ和ActiveMQ作为我们的应用程序JMS代理,该应用程序生成非常高的负载。 HornetQ在性能和可靠性方面胜出。不幸的是,这两个项目都缺乏文档。例如,对我来说,设置HornetQ机群集是一场噩梦 :( - omnomnom

9

我在我的日常工作中经常使用ActiveMq,并且非常推荐它,因为它满足了你提出的大部分需求。我尤其依赖于JMX管理控制台,这是一流的。

我也一直密切关注HornetQ,未来可能会添加对它的支持。从我所看到的情况来看,HornetQ比较轻量级,并且具有一些非常好的NIO优化,这应该可以加速它的运行速度。但是,它缺少ActiveMQ提供的一些企业集成功能和可能一些管理功能。然而,从我所看到的情况来看,HornetQ团队正在努力填补这些空白。

在我看来,无论选择哪个都不会错。试着同时使用它们,看看哪个更适合你。


11
在查看 ActiveMQ 时,我不喜欢的一件事是它依赖于 Spring(如果我错了,请纠正我)。引入 Spring 后,你就会发现有很多依赖。而 HornetQ 只需要 netty 和 slf4j。我无法评论它更令人兴奋的特性,但分析依赖关系总是一个好的开始,在这方面,越少越好。 - mP.
我同意。当附加工具可以正交和可选时,我觉得它会更好。然而,并非总是可能的,低级工具如DB、MQ、TM等不需要紧密耦合。 - will

4

在决定使用ActiveMQ之前,我对它们进行了广泛评估。这是一个经过验证和稳定的消息传递系统,这正是你想要的。我在两个大型系统上成功地使用了ActiveMQ。一段时间以来,HornetQ曾有过一些炒作声音,称自己比ActiveMQ更快,因此我看了看。然而,HornetQ的群集存在严重的缺陷,可能导致消息丢失和服务器试图无限期地连接到失败的节点。HornetQ的首席开发人员拒绝承认HornetQ中的缺陷,并在用户论坛上变得非常攻击性,这应该让你对该产品非常警惕。


5
关于你提到的一点(“HornetQ拒绝承认HornetQ的缺陷,并在用户论坛上非常防御,这应该让你非常警惕该产品。”)我不认为情况是这样的。即使以前是这样,现在也不再是了。我目前是HornetQ的负责人,我们已经对HornetQ 2.2.2和2.2.5进行了一些重构,并且在2.3.0上进行了一些额外的改进,我们很乐意听取任何反馈。 - Clebert Suconic
你使用了 AMQ 嵌入式还是远程代理? - raffian

2

选择Apache ActiveMQ Artemis没错

HornetQ代码库被捐赠给了Apache ActiveMQ项目,HornetQ社区加入该项目以增强捐赠的代码库并创建下一代消息代理。结果就是Apache ActiveMQ Artemis。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接