ActiveMQ vs阿波罗vs卡夫卡


69

我以前没有使用* MQ的经验,并且希望在一般情况下建立有关JMS和消息队列的知识。这样,我想知道我应该从ActiveMQ开始还是完全“忽略”它,然后从教自己Apollo开始。Apollo是否与ActiveMQ一样功能完善?它是否实现了JMS 2.0(我看到ActiveMQ陷入了1.1)?我会错过一些非常重要的东西吗?

另外,Kafka与这两种解决方案相比如何?


3
另请查看新的ActiveMQ Artemis:activemq.apache.org/artemis
mjn 2015年

Answers:


104

Apache ActiveMQ是功能强大且功能强大的强大工具。它不是最快的MQ软件,但对于大多数用例来说足够快。功能包括灵活的字符串,故障转移,与不同应用程序服务器的集成,安全性等。

Apache Apollo尝试为ActiveMQ编写新的内核,以应对大量的客户端和消息。它不具有ActiveMQ的所有便捷功能,但扩展性更好。当您为Apache Apollo提供大型多核服务器和数千个并发连接时,它是一种非常快速的MQ实现。它具有一个不错的,简单的用户界面,但不是“一刀切”的解决方案。

似乎正在尝试将许多ActiveMQ功能与HornetQ合并为ActiveMQ Artemis。HornetQ具有JMS2.0支持,所以我谦虚的猜测是它很可能会出现在ActiveMQ 6.x中。

JIRAGithub上

卡夫卡是另一种野兽。这是一个非常简单的消息代理,旨在在多个服务器上尽可能快地扩展持久性发布订阅(主题)。对于中小型部署,Kafka可能不是最佳选择。它也有做事的方式来实现高吞吐量,因此您必须在灵活性方面进行大量交易才能获得高分布式吞吐量。如果您是MQ和代理领域的新手,我想Kafka太过分了。另一方面-如果您有一个大小合适的服务器集群,并且想知道如何通过它推送尽可能多的消息-试一下Kafka!


谢谢!我猜想在我看来,Apache Apollo是必经之路。
马丁

如果我(部分)了解ActiveMQ与Apollo的关系(基于先前的经验等,较新的实现方式),那么Artemis的总体愿景(目标,动机)是什么?
Jacek Cz 2015年

12
由于缺少专门用于此工作的Scala程序员,因此Apollo在某种程度上未能成为AMQ的新的非阻塞核心。正如我所见,Artemis的愿景-我不是ActiveMQ的官员-是要做阿波罗没有做的事情。用主流语言(Java)编写的经过战斗测试的产品(HornetQ)的机会可能比从头开始编写的机会更大。两者的目标都是相同的-不阻塞ActiveMQ以支持IoT和移动应用程序的新需求等
Petter Nordlander 2015年

29

这是一个较旧的问题,但我将在此处提供更现代的答案。

  • 阿波罗计划已经正式死了,他们认为阿耳emi弥斯是新的热点。(链接)阿波罗(貌似)停滞不前的发展使我对阿尔in弥斯的未来没有信心。
  • 我的经验与Petter的回答相似,因为ActiveMQ具有丰富的功能。但是,似乎每个发行版都可以修复随机崩溃和内存泄漏,但这并不能激发人们的信心。对于我的项目(使用集群)来说,它是稳定的,但是在过去的大约十二个发行版中(目前使用的是5.14.3),我们已经看到奇怪的行为和代理崩溃。
  • 我尚未使用RabbitMQ(我的当前项目已提交给ActiveMQ),但我将在需要消息总线的下一个项目中进行尝试。没有厨房功能部件的支持将希望它更加稳定。

编辑:2.3.0 Apache Artemis发布发生在2017年9月5日。因此,到目前为止它的确似乎还在进步。但是(链接)changelog仍然看起来太可怕了。


2
FWIW,ActiveMQ Artemis上的开发现在比阿波罗(Apollo)更加活跃。实际上,至少根据GitHub,对Artemis的贡献者数量已经超过ActiveMQ。Artemis也已经作为Red Hat JBoss AMQ 7的一部分进行了商业化。
贾斯汀·伯特拉姆

4

我确定了ActiveMQ,Apollo,HornetQ在非持久性场景和持久性场景下的性能基准,我认为这对您选择应该使用哪种性能有所帮助,链接如下所示:http : //hiramchirino.com/jms- Benchmark / ubuntu-2600k / index.html


2
这是使用各种消息传递解决方案进行的最新基准测试:softwaremill.com/mqperf。不包含Apollo,因为它不再处于积极开发中,但是包含ActiveMQ 5.x和ActiveMQ Artemis。
贾斯汀·伯特拉姆

2

Apache Kafka可以被描述为“分布式流平台”,其中ActiveMQ,MOM(面向消息的中间件)是“通用消息代理”

Kafka做一件事情,一件做得很好:在发布/订阅(pub / sub)体系结构中,消息被写入主题(按分区分配的日志),然后消费者通过偏移量消费。专为云计算设计的Kafka着眼于非常高的吞吐量,将重点放在了这一点上,如今,异步消息传递已成为主流。

ActiveMQ支持发布/订阅点对点语义。在后者中,队列处理单个生产者和特定消费者之间的单个消息。就像pub / sub一样,它是异步的,但工作原理略有不同:如果使用者在队列中收到一条消息,但未能确认,则该消息将发送给另一个使用者。ActiveMQ还支持支持多种消息传递协议,包括AMQP,STOMP,JMS,CAMEL和MQTT。

虽然Apache Kafka可能是进行简单异步通信的理想选择;对于某些更复杂的路由模式(例如企业模式),ActiveMQ似乎是某些人的首选,但是,由于诸如更高的吞吐量更有效的日志/主题分区管理以及更细粒度的原因,Kafka是对ActiveMQ的改进。消费主题的消费者的ACL

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.