Saturday 4 August 2018

Introduction to ActiveMQ


ActiveMQ is an open source message broker that implements JMS specification.

What is Message Broker?
Message brokers receive messages from publishers and route them to consumers.

Is ActiveMQ implements JMS specification?
Yes

What are other products that implements JMS specification?
There are multiple products that implement JMS specification.

·       Amazon SQS with Java Messaging Library
·       Apache ActiveMQ
·       Apache Qpid
·       Oracle Weblogic
·       EMS from TIBCO
·       FFMQ, GNU LGPL licensed
·       FioranoMQ
·       IBM MQ
·       JBoss Messaging and HornetQ from JBoss
·       JORAM, from the OW2 Consortium
·       Lightstreamer JMS Extender
·       Open Message Queue, from Oracle
·       OpenJMS, from The OpenJMS Group
·       RabbitMQ, from Pivotal (JMS Client for RabbitMQ)
·       Solace JMS from Solace Systems
·       SAP NetWeaver Process Integration
·       SonicMQ from Aurea Software
·       SwiftMQ
·       Tervela
·       Ultra Messaging
·       webMethods from Software AG
·       WebSphere Application Server from IBM

Even though ActiveMQ implements JMS specification, apart from this, it provides more features. For example, it support REST, WebSocket interfaces.

What is the latest version of ActiveMQ?
At the time of writing this tutorial ‘5.15.3’ is the latest verison, released in Jan 2018.

Is ActiveMQ written in Java?
Yes

What are the protocols supported by ActiveMQ?
AMQP, MQTT, OpenWire and STOMP

Is ActiveMQ Support languages other than java?
Yes, at the time of writing this tutorial, ActiveMQ supports below languages.

·       .NET
·       C (defunct)
·       C++
·       Erlang
·       Go
·       Haskell
·       Haxe (defunct)
·       Jekejeke Prolog
·       NetLogo
·       Node.js
·       Perl 5
·       Pike
·       Python
·       Racket
·       Ruby on Rails
·       Tcl/Tk

What is Asynchronous Messaging?
In MOM (Message oriented Middleware) model, senders send the messages to message brokers like Apache ActiveMQ, and receiver receive the messages from ActiveMQ. There is no direct contact between sender and receiver. Senders do not have any idea about receivers and Receivers do not have any idea about senders. This is called Asynchronous Messaging.

Terminology
Message Broker: Message brokers receive messages from publishers and route them to consumers.

Exchange: Messages are published to exchanges. Exchanges distribute message copies to queues using rules called bindings.

Producer: Program that sends messages is called a producer.

Queue: Whatever the messages sent by producers to ActiveMQ are stored in queues. Theoretically queue is infinite size buffer, producers can send as many messages as they want. Many producers can send messages that go to one queue. Many consumers can try to receive data from one queue.

Consumer: It is a program that receives messages from queue and processes them.

JMS Client: It is an application that can send / receive messages from JMS provider.  

JMS Producer: An application that sends messages to JMS provider

JMS Consumer: An application that receives messages from JMS provider

JMS Provider:  An application that implements JMS specification. Ex: Active MQ, Rabbit MQ etc.,

JMS Message: It is the basic construct, used by JMS client, Receiver to send and receive messages. You can send any information as part of jms message including text, binary, headers.

I am using below maven dependency throughout the tutorial.

                  <dependency>
                           <groupId>org.apache.activemq</groupId>
                           <artifactId>activemq-client</artifactId>
                           <version>5.15.3</version>
                  </dependency>




Previous                                                 Next                                                 Home

No comments:

Post a Comment