SOA Patterns > Service Messaging Patterns > Reliable Messaging
Reliable Messaging (Little, Rischbeck, Simon)
How can services communicate reliably when implemented in an unreliable environment?
Service communication cannot be guaranteed when using unreliable messaging protocols or when dependent on an otherwise unreliable environment.
An intermediate reliability mechanism is introduced into the inventory architecture, ensuring that message delivery is guaranteed.
Middleware, service agents, and data stores are deployed to track message deliveries, manage the issuance of acknowledgements, and persist messages during failure conditions.
Using a reliability framework adds processing overhead that can affect service activity performance. It also increases composition design complexity and may not be compatible with Atomic Service Transaction.
When building services as Web services, this pattern is commonly applied by implementing a combination of the WS-ReliableMessaging standard (A) and guaranteed delivery extensions, such as a persistent repository (B). This figure highlights the typical moving parts of the resulting reliability framework.