An application accesses another system via Messaging.
How do you encapsulate access to the messaging system from the rest of the application?
Use a Messaging Gateway, a class than wraps messaging-specific method calls and exposes domain-specific methods to the application.
The Messaging Gateway encapsulates messaging-specific code (e.g., the code required to send or receive a message) and separates it from the rest of the application code. This way, only the Messaging Gateway code knows about the messaging system; the rest of the application code does not. The Messaging Gateway exposes a business function to the rest of the application so that instead of requiring the application to set properties like Message.MessageReadPropertyFilter.AppSpecific, a Messaging Gateway exposes methods such as GetCreditScore that accept strongly typed parameters just like any other method. A Messaging Gateway is a messaging-specific version of the more general Gateway pattern [EAA].
... Read the entire pattern in the book Enterprise Integration Patterns
Related patterns:
Scatter-Gather, Asynchronous Implementation with MSMQ, Correlation Identifier, Messaging, Request-Reply