ActiveMQ vs Apollo vs Kafka

时间:2014-12-27 11:51:53

标签: jms activemq message-queue apache-kafka apollo

我之前没有任何使用* MQ的经验,而且我正在寻求建立有关JMS和消息队列的知识。这样,我想知道我是应该从ActiveMQ开始,还是只是“忽略”它,然后开始自学阿波罗。 Apollo是否像ActiveMQ一样功能齐全?它是否实现了JMS 2.0(我看到ActiveMQ卡在1.1中)?我会遗漏一些非常重要的东西吗?

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

4 个答案:

答案 0 :(得分:99)

Apache ActiveMQ是一款功能强大的好东西。它不是最快的MQ软件,但对于大多数用例来说足够快。其中的功能包括灵活的屏幕,故障转移,与不同应用服务器的集成,安全性等。

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

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

JIRAGithub

卡夫卡是一个不同的野兽。它是一个非常简单的消息代理,旨在尽可能快地在多个服务器上扩展持久性发布订阅(主题)。对于中小型部署,Kafka可能不是最佳选择。它还具有实现高吞吐量的方法,因此您必须在灵活性方面进行大量交易以获得高分布式吞吐量。如果你是MQ和经纪人领域的新手,我想Kafka是矫枉过正的。另一方面 - 如果你有一个体面的服务器集群,并想知道如何通过它推送尽可能多的消息 - 给卡夫卡一个旋转!

答案 1 :(得分:25)

这是一个较老的问题,但我会在这里提供更现代的答案。

  • Apollo项目非正式死亡,他们认为Artemis是新的热点。 (link)阿波罗的(似乎)停滞不前的发展并没有让我对阿尔忒弥斯的未来充满信心。
  • 我的经验类似于Petter的答案,因为ActiveMQ功能丰富且功能强大。但是,似乎每个版本都修复了随机崩溃和内存泄漏,这并没有激发信心。它对我的项目(使用群集)很稳定,但我们在最近的十几个版本(目前使用5.14.3)中看到了代理中奇怪的行为和崩溃。
  • 我没有使用过RabbitMQ(我目前的项目致力于ActiveMQ),但我将在下一个需要消息传递总线的项目上尝试。没有支持功能的厨房水槽将有希望意味着它更稳定。
编辑:2.3.0阿帕奇Artemis发布于2017年9月5日发布。所以它似乎正在进行中。但是(link)更改日志似乎仍然太可怕了。

答案 2 :(得分:3)

我是ActiveMQ,Apollo,HornetQ在非持续场景和持久场景下的性能基准测试,我认为选择应该使用哪一个将有助于您,链接如下所示: http://hiramchirino.com/jms-benchmark/ubuntu-2600k/index.html

答案 3 :(得分:0)

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

Kafka 做一件事,并且做得非常好:在发布/订阅(发布/订阅)架构中,消息被写入主题(按分区分发的日志) ),然后消费者通过抵消来消费。考虑到非常高的吞吐量的built for the cloud的Kafka专注于此,如今,异步消息传递已成为热门选择。

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

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