ActiveMQ - JMS Compliant Message Broker

Mar 08, 2021reviewsmessagingtools

ActiveMQ is a Java-based open-source project developed by the Apache Software Foundation. It’s comparable to other messaging systems such as Apache Kafka and RabbitMQ.

It’s possible to write ActiveMQ clients in other languages (such as Node.js, Ruby, and Python), but ActiveMQ is built on Java, and is probably best suited for an organization that’s already invested in Java.

ActiveMQ comes with and the suite of protocols that it supports, along with the enterprise flavour and readiness, can place this tool at the top of the list when it comes to choosing the right messaging broker for your infrastructure.

Java Message Service (JMS) is a messaging standard that allows application components based on the Java Platform Enterprise Edition (Java EE) to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.

Under the Hood

ActiveMQ sends messages between client applications—producers, which create messages and submit them for delivery, and consumers, which receive and process messages. The ActiveMQ broker routes each message through one of two types of destinations: a queue and a topic.

ActiveMQ gives you the flexibility to send messages through both queues and topics using a single broker. In point-to-point messaging, the broker acts as a load balancer by routing each message from the queue to one of the available consumers in a round-robin pattern.

ActiveMQ Flavors

ActiveMQ 5 Classic: Long established, endlessly pluggable architecture serving many generations of applications.

  • JMS 1.1 with full client implementation including JNDI
  • High availability using shared storage
  • Familiar JMS-based addressing model
  • “Network of brokers” for distributing load
  • KahaDB & JDBC options for persistence

ActiveMQ Artemis: High-performance, non-blocking architecture for the next generation of event-driven messaging applications.

  • JMS 1.1 & 2.0 with full client implementation including JNDI
  • High availability using shared storage or network replication
  • Simple & powerful protocol agnostic addressing model
  • Flexible clustering for distributing load
  • Advanced journal implementations for low-latency persistence as well as JDBC
  • High feature parity with ActiveMQ 5 to ease migration