An enterprise messaging system (EMS) or messaging system in brief is a set of published enterprise-wide standards that allows organizations to send semantically precise messages between computer systems. EMS systems promote loosely coupled architectures that allow changes in the formats of messages to have minimum impact on message subscribers. EMS systems are facilitated by the use of structured messages (such as using XML or JSON), and appropriate protocols, such as DDS, MSMQ, AMQP or with web services.
EMS usually takes into account the following considerations:
EMS are also known as Message-Oriented Middleware (MOM)
The design of an EMS is usually broken down into two sections:
The commonalities between messaging systems (in terms of capabilities and architecture) have been captuted in a platform-independent fashion as enterprise integration patterns (a.k.a. messaging patterns).
Although similar in concept to an enterprise service bus (ESB), an EMS places emphasis on design of messaging protocols (for instance, using DDS, MSMQ or AMQP), not the implementation of the services using a specific technology such as web services, DDS APIs for C/C++ and Java, .NET or Java Message Service (JMS).
Note that an Enterprise Messaging System should not be confused with an electronic mail system used for delivering human readable text messages to individual people.
An example of a specific application programming interface (API) that implements an enterprise messaging system is the Java Message Service. Although this is an API it embodies many of the same issues involved in setting up a full EMS.
Policy statements may also be extracted from a centralized policy server. These policy statements can be expressed in the XML Access Control Markup Language (XACML).