The Message-Oriented Middleware Services provide functionality to support the exchange of messages (data structures) between data producer and consumer services, independent of the message format (XML, binary, etc.) and content.
Message-Oriented Middleware Services support different models of message exchange (direct, brokered, queues), exchange patterns (request/response, publish/subscribe, solicit response (polling for response), and for fire and forget), topologies (one-to-one, one-to-many) and modes of delivery (synchronous, asynchronous, long running). They also provide the support for routing, addressing, and caching.