The term "Message Exchange Pattern" has a specific meaning within the Simple Object Access protocol. SOAP MEP types include:
In-Only: This is equivalent to one-way. A standard one-way messaging exchange where the consumer sends a message to the provider that provides only a status response.
Robust In-Only: This pattern is for reliable one-way message exchanges. The consumer initiates with a message to which the provider responds with status. If the response is a status, the exchange is complete, but if the response is a fault, the consumer must respond with a status.
In-Out: This is equivalent to request–response. A standard two-way message exchange where the consumer initiates with a message, the provider responds with a message or fault and the consumer responds with a status.
In-Optional-Out: A standard two-way message exchange where the provider's response is optional.
Out-Only: The reverse of In-Only. It primarily supports event notification. It cannot trigger a fault message.
Robust Out-Only: Similar to the out-only pattern, except it can trigger a fault message. The outbound message initiates the transmission.
Out-In: The reverse of In-Out. The provider transmits the request and initiates the exchange.
Out-Optional-In: The reverse of In-Optional-Out. The service produces an outbound message. The incoming message is optional.
The ØMQ message queueing library provides so-called sockets which require indicating a messaging pattern to be used, and are optimized for each pattern. The basic ØMQ patterns are:
Publish–subscribe connects a set of publishers to a set of subscribers. This is a data distribution pattern.
Push–pull connects nodes in a fan-out / fan-in pattern that can have multiple steps, and loops. This is a parallel task distribution and collection pattern.
Exclusive pair connects two sockets in an exclusive pair. This is a low-level pattern for specific, advanced use cases.
Each pattern defines a particular network topology. Request-reply defines so-called "service bus", publish-subscribe defines "data distribution tree", push-pull defines "parallelised pipeline". All the patterns are deliberately designed in such a way as to be infinitely scalable and thus usable on Internet scale.