What is Message Oriented Middleware?
Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems.
MOM and its Providers
IBM MQ -> IBM
ActiveMQ -> Apache
SonicMQ -> Progress
RabbitMQ -> Rabbit Technologies
Even after selecting the messaging middleware application, selection of messaging protocol and understanding them becomes a huge hurdle.
>>AMQP (Advanced Message Queuing Protocol)
1. Interoperable. [To understand this let's go thorugh why AMQP came into existence as below with http://www.wmrichards.com/amqp.pdf as reference material]
Java Messaging Service offers the Standard such the Producer and Consumer if implemented in Java, the message broker [ActiveMQ/ RabbitMQ/ any other Message Oriented Middleware] used can be replaced with few lines of Code Change.
However if Producer is written in java and Consumer written in Ruby, then JMS standard becomes no use, change of Message Broker would result in Code refactoring at both the ends.
Thus AMQP was brought it to support message interoperability. If AMQP supported message Broker is used as Message Oriented Middleware then the entire problem would be solved as AMQP provides the Standard for how the message to be Structured and transmitted.
2. Reliable - Provides Subscribe Feature, Provides options for Controlling Message Queue Size.
>>MQTT (Message Queue Telemetry Transport)
1. Have very less API Methods and it's Simple.
2. Efficient for power Constrained Devices - Ex: Smartphones.
3. Data Exchanged in Binary Format.
1. No Message Queue in spite as in the name.
>> STOMP (Simple Text Oriented Messaging Protocol)
1. Data Exchange Format is Text Based.
2. Similar to AMQP and MQTT provide frame header with Properties and body.
1. No Support for Message Queue.