ActiveMQ vs Apollo vs Kafka

I have no previous experience with * MQ, and I'm going to create knowledge in JMS and message queues in general. So I wonder if I should start with ActiveMQ or just β€œignore” it altogether and start with Apollo training. Is Apollo functional as ActiveMQ? Does it implement JMS 2.0 (I see ActiveMQ is stuck with 1.1)? Will I have something really important?

Also, how does Kafka compare with these two solutions?

+61
jms activemq message-queue apache-kafka apollo
Dec 27 '14 at 11:51
source share
4 answers

Apache ActiveMQ is a great workhorse full of features and nice things. This is not the fastest MQ software, but fast enough for most use cases. Among the functions are flexible integration, rollback, integration with various application servers, security, etc.

Apache Apollo is an attempt to write a new kernel for ActiveMQ to handle a large number of clients and messages. It has no nice and convenient ActiveMQ function, but it scales much better. Apache Apollo is a really fast MQ implementation when you give it a large multi-core server and thousands of simultaneous connections. It has a nice simple user interface, but is not a β€œone size fits all” solution.

There seems to be an attempt to continue combining several ActiveMQ features with HornetQ under the name ActiveMQ Artemis. HornetQ supports JMS2.0, so my humble assumption is that it is likely to appear in ActiveMQ 6.x.

JIRA , Github

Kafka is another beast. This is a very simple message broker, designed to scale the constant publication of subscriptions (topics) as quickly as possible on multiple servers. For small deployments, Kafka is probably not the best option. It also has a way to do something to achieve high bandwidth, so you need to trade a lot in terms of flexibility in order to get high distributed bandwidth. If you are new to MQ and brokers, I think Kafka is too crowded. On the other hand, if you have a cluster of decent size servers and wonder how to make the maximum possible number of messages with this, give Kafka a spin!

+97
Dec 27 '14 at 18:04
source share
β€” -

This is an older question, but I will provide a more modern answer here.

  • The Apollo project is unofficially dead, and they suggest that Artemis is a new vehemence. ( link ) The (seemingly) stopped development of Apollo does not inspire confidence in the future of Artemis.
  • My experience is similar to Petter's answer in that ActiveMQ has great functionality. However, it seems that each release fixes random crashes and memory leaks, and this does not inspire confidence. This is stable for my project (which uses clustering), but we have seen strange behavior and crashes in the broker over the last dozen releases (5.14.3 is currently used)
  • I have not used RabbitMQ (my current project is about ActiveMQ), but I will try it in the next project, which needs a messaging bus. We hope that the lack of a kitchen sink to support functions means that it is more stable.

EDIT: Apache Artemis release 2.3.0 happened ~ September 5, 2017. So it seems to be progressing at the moment. But the ( link ) list of changes still seems too scary.

+24
Aug 23 '16 at 16:34
source share

I am the benchmark for the performance of ActiveMQ, Apollo, HornetQ with unstable script and persistent script. I think it will be useful for you to choose which one should be used, the link is below: http://hiramchirino.com/jms- test / ubunt-2600K / index.html

+2
Mar 21 '17 at 10:03
source share

Apache Kafka can be described as a "distributed streaming platform," where ActiveMQ , MOM (messaging-oriented middleware), is a "general-purpose message broker . "

Kafka does one thing and one thing is really good: in the publication / subscription architecture (pub / sub), messages are written in sections (journals distributed by sections), which are then consumed by consumers by offset. Designed for a very high-bandwidth cloud , Kafka focuses on this, and today it is the path of asynchronous messaging.

ActiveMQ supports both pub / sub semantics and point-to-point semantics. In the latter case, the queue processes individual messages between one producer and a specific consumer. This, like pub / sub, is asynchronous, but works a little differently: if the consumer receives a message in the queue but cannot confirm it, the message is then sent to another consumer. ActiveMQ also supports several messaging protocols, including AMQP, STOMP, JMS, CAMEL, and MQTT.

While Apache Kafka can be a simple asynchronous connection; ActiveMQ seems to prefer some for more complex routing patterns, such as corporate patterns, however many argue that Kafka is an improvement over ActiveMQ, for reasons such as higher throughput , more efficient partition management for logs / and more. detailed approach. ACLs for consumers using the topic.

0
Apr 17 '19 at 21:21
source share



All Articles