ActiveMQ vs阿波罗vs卡夫卡

我以前没有任何关于* MQ的经验,我正在寻求build立关于JMS和消息队列的知识。 那样的话,我想知道我应该从ActiveMQ开始,还是完全“忽略”它,并开始自学阿波罗。 Apollo与ActiveMQ一样function齐全吗? 它是否实现JMS 2.0(我看到ActiveMQ被困在1.1)? 我会错过一些非常重要的东西吗?

另外,卡夫卡如何比较这两个解决scheme?

Apache的ActiveMQ是一个伟大的主力function和漂亮的东西。 它不是最快的MQ软件,但对于大多数使用情况来说足够快。 其中包括灵活的群集,故障切换,与不同应用程序服务器的集成,安全性等。

Apache Apollo试图为ActiveMQ编写一个新的核心来处理大量的客户端和消息。 它没有ActiveMQ的所有漂亮和方便的function,但比例更好。 Apache Apollo是一个非常快速的MQ实现,当你给它一个大型的多核服务器和数千个并发连接。 它有一个很好的,简单的用户界面,但不是一个“通用”的解决scheme。

看起来有一个企图正在进行,以ActiveMQ Artemis为名合并HornetQ的一些ActiveMQfunction。 HornetQ拥有JMS2.0的支持,所以我简单的猜测是它很可能出现在ActiveMQ 6.x中。

JIRA , Github

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

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

  • 阿波罗计划非官方死亡,他们认为阿耳忒弥斯是新的热点。 ( 链接 )阿波罗(似乎)停滞的发展并没有让我对阿耳忒弥斯的未来充满信心。
  • 我的经验与Petter的答案类似,ActiveMQfunction丰富且function强大。 但是,似乎每个版本都修复了随机崩溃和内存泄漏,这并不能激发人们的信心。 对于我的项目(使用集群)来说它是稳定的,但是我们看到了在最近的十几个版本(当前使用5.14.3)中经纪人的怪异行为和崩溃,
  • 我还没有使用RabbitMQ(我目前的项目是致力于ActiveMQ),但是我将在下一个需要消息总线的项目上尝试它。 没有厨房水槽的function支持将有希望意味着它更加稳定。

编辑:2.3.0 Apache阿蒂米斯发布发生〜2017年9月5日。所以它似乎进展至今。 但( 链接 )changelog仍然显得太可怕了。

这里是非持久性场景下的activemq,Apollo,hornetq的性能基准,我认为这对你select使用哪一个应该有帮助,链接如下图所示: http : //hiramchirino.com/jms-benchmark /ubuntu-2600k/index.html