Message-delivery semantics describe whether messages reach a recipient, how many times they arrive, and whether they arrive in order. They make failures and guarantees explicit in distributed systems. section 1.6
A request-response exchange separates message delivery from message processing. Delivery transfers and presents a message; processing generates a response and may create a side effect. At-most-once, at-least-once, and exactly-once describe both delivery and processing, although practical reasoning focuses especially on processing and side effects. section 4.1
The core delivery guarantees are:
- At-most-once: the network delivers a message zero or one time. section 4.1
- At-least-once: the network delivers a message one or more times, so duplicates remain possible. section 4.1
- Exactly-once: the network delivers a message once; corresponding processing semantics specify whether the receiver processes it once. section 4.1
- Messages may also be lost, duplicated, or reordered, requiring countermeasures that account for uncertainty and side effects. section 1.6
An unanswered request
If an employee sends a request but receives no response, the request or the response may have been lost. Sending the request again may cause the receiver to process it twice, creating inconsistent side effects. section 1.6
Figure 4.2 Step-by-step progression of the request-response dialogue
Trace the request-response sequence from sender submission through network delivery, receiver processing, response submission, and response delivery. section 4.1
