Message Oriented Middleware is a category of inter-application communication software that relies on asynchronous message passing as opposed to a request/response metaphore.

Most message oriented middleware (MOM) is based around a message queue system, although there are implementations that rely on a broadcast or multicast messaging system.

Advantages

The primary advantage of a message based communications protocol is the ability to store, route or transform the message as it is being delivered.

Storage

Most MOM systems provide a persistent storage to back up the message transfer medium. This means that it is not necessary for both the sender and reciever to be connected at the same time. This is particularly useful when dealing with intermittent connections, such as unreliable networks or timed connections. It also means that should the receiver application fail for any reason, the senders can continue unaffected, as the messages they send will simply accumulate in the message store and will be processed when the receiver restarts.

Routing

Another important advantage of MOM is the ability to route messages within the middleware layer itself. Taking things a further step, it is possible to deliver a single message to more than one recipient (broadcast or multicast).

Transformation

There is no reason why, in a message based middleware system, the message received by the recipient need be exactly the same as that sent by the sender. Intelligence can be built into the MOM system itself to transform messages en-route to better meet the requirements of the sender.

In conjunction with the routing and broadcast/multicast facilities mentioned above, it now becomes possible for one application to send a message in it's own native format, and for two or more other applications to each receieve a copy of that message in their own native format.

In fact, many modern MOM systems provide sophisticated message transformation (mapping) tools that allow transformation of messages to be defined using a simple GUI drag and drop interface with no coding necessary.

Disadvantages

The primary disadvantage of message oriented middleware is that it requires an extra component in the architecture, the message trasnfer agent. As with any system, adding another component can lead to reductions in performance and reliability, and can can also make the system as a whole more difficult and expensive to maintain.

In addition, many inter-application communications are synchronous by nature, with the sender specifically wanting to wait for a reply before continuing. Because message based communication is inherently asynchronous, it may not be a good fit in these situations. That said, most MOM systems have facilites to group a request and a response as a single pseudo-synchronous transaction.

Standards

One of the problems with message oriented middleware has been the lack of standards governing its use. All the major vendors have their own implementations, each with it's own API and management tools.

The J2EE programming environment has defined a standard API, called JMS (Java Message Services) that most MOM vendors have implemented, and if developing in Java it should be reasonable easy hide the particular MOM implementation. However, this solution is not available to users of other development languages.

MOM Products