What is message-oriented middleware (MOM)?

MOM is a specific class of middleware that supports the exchange of general-purpose messages in a distributed application environment. Data is exchanged by message passing and/or message queuing supporting both synchronous and asynchronous interactions between distributed computing processes. The MOM system ensures message delivery by using reliable queues and by providing the directory, security, and administrative services required to support messaging.

What is the primary purpose or functions of message-oriented middleware?

MOM is primarily middleware that facilitates communication between distributed applications. While MOM supports both synchronous and asynchronous messaging, it is most closely identified with asynchronous messaging using queuing. MOM sends messages from one application to another using a queue as an interim step. Client messages are sent to a queue and remain there until they are retrieved by the server application. The advantage to this system is that the server application does not need to be available when the message is sent, instead, the server can retrieve the message at any time. In addition, since messages can be retrieved off the queue in any order, MOM can also facilitate retrieval of messages using priority or load-balancing schemes. MOM can also provide a level of fault-tolerance using persistent queues that allow messages to be recovered when the system fails.

According to an October 1996, article in InfoWorld by Julie Bort, "Queuing is a popular choice for processes where each step is dependent on the last, …It is also very suitable for applications designed for back-end communication where no direct user interaction is involved." Many other analysts describe the importance of MOM in supporting legacy applications as well as widely dispersed systems.

How is it different from other types of middleware?

Middleware is the wide range of services layered between the applications and an operating system that provide specialized services and interoperability between distributed applications. For a variety of reasons including the fact that middleware is a relatively new category of software, the functionality of different kinds of middleware is not standardized. For example, the primary function of transaction processing middleware has to do with control, but many transaction processing products also include communication services. Middleware vendors add functions ensure that their products interoperate with a variety of hardware and software and to help differentiate their product from their competitors’.

Because each product within a middleware category includes a variety of functionality and because the "standard" functions within each category change rapidly, useful distinctions among middleware services are hard to find. However, the following is one of the many ways to categorize middleware products that we found helpful. Please note that this is not a comprehensive list of middleware services.

Presentation Services: Forms manager, graphics manager, hypermedia linker, and printing manager.

Communication Services: Peer-to-peer messaging, remote procedure call, message passing, message queuing, electronic mail, and electronic data interchange.

Control Services: Thread manager, transaction manager, resource broker, fine-grained request scheduler, and coarse-grained job scheduler.

Information Services: Directory server, log manager, file manager, record manager, relational database system, object-oriented database system, and repository manager.

MOM falls within the communication services middleware and typically includes message passing and message queuing. Many products also support remote procedure calls as well as directory services.

What is the difference between MOM and other communication services?

MOM supports messages and therefore is primarily designed to support deferred communication while peer-to-peer and remote procedure calls (RPC) are designed to support synchronous communication. Under RPC, the receiving server must be available to accept messages sent. If the server is down, the message cannot be delivered at that time. MOM, on the other hand, can send messages to servers that are down without having to resend them. Messages under a MOM system are placed into a queue and retrieved whenever the server requests them. Whether the server is available at the time the message is sent is irrelevant.