Message-oriented middleware

Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems.

The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces.

In addition, by providing an administrative interface, this new, virtual system of interconnected applications can be made fault tolerant and secure.

[2] MOM provides software elements that reside in all communicating components of a client/server architecture and typically support asynchronous calls between the client and server applications.

[3] Central reasons for using a message-based communications protocol include its ability to store (buffer), route, or transform messages while conveying them from senders to receivers.

It is up to the code that implements the MOM system and up to the administrator to resolve issues like interoperability, reliability, security, scalability, and performance.

Using a MOM system, a client makes an API call to send a message to a destination managed by the provider.

MOM comprises a category of inter-application communication software that generally relies on asynchronous message-passing, as opposed to a request-response architecture.

In asynchronous systems, message queues provide temporary storage when the destination program is busy or not connected.

A MOM system with built-in intelligence can transform messages and route to match the requirements of the sender or of the recipient.

In addition, many inter-application communications have an intrinsically synchronous aspect, with the sender specifically wanting to wait for a reply to a message before continuing (see real-time computing and near-real-time for extreme cases).

Additional services provide transfer of ownership, data distribution optimizations and monitoring and management of participating Federates (systems).

It provides a lightweight publish/subscribe reliable messaging transport protocol on top of TCP/IP suitable for communication in M2M/IoT contexts where a small code footprint is required and/or network bandwidth is at a premium.

Designed to be extensible, the protocol has also been used for publish-subscribe systems, signalling for VoIP, video, file transfer, gaming, Internet of Things applications such as the smart grid, and social networking services.

XMPP-based software is deployed widely across the Internet, according to the XMPP Standards Foundation, and forms the basis for the Department of Defense (DoD) Unified Capabilities Framework.

A similar effort is with the actively evolving OpenMAMA project, which aims to provide a common API, especially to C clients.