Even when a sender application only sends a message once, the receiver application may receive the message more than once.
How can a message receiver deal with duplicate messages?
Design a receiver to be an Idempotent Receiver--one that can safely receive the same message multiple times.
The term idempotent is used in mathematics to describe a function that produces the same result if it is applied to itself, i.e. f(x) = f(f(x)). In Messaging this concepts translates into a message that has the same effect whether it is received once or multiple times. This means that a message can safely be resent without causing any problems even if the receiver receives duplicates of the same message.
Idempotency can be achieved through two primary means:
- Explicit "de-duping", i.e. the removal of duplicate messages.
- Defining the message semantics to support idempotency.
... Read the entire pattern in the book Enterprise Integration Patterns
Related patterns:
Command Message, Guaranteed Delivery, Messaging, Resequencer