This chapter covers
- Message delivery and message processing
- At-least-once, at-most-once, and exactly-once delivery and processing
- Equivalence and idempotence
When we talk about message delivery and processing, we may come across numerous misconceptions and instances of borderline deception, which can be detrimental to forming accurate, concise mental models and can cloud our understanding. Some distributed system engineers use the term exactly-once processing, for example, but what they really mean is exactly-once processing semantics. Exactly-once processing refers to the ideal scenario in which each message is processed only once, whereas exactly-once processing semantics means that the system behaves as though each message is processed only once despite potential underlying retries or duplicates.
Another example is marketing material that claims a software product guarantees exactly-once processing semantics to make the product more appealing while failing to disclose the limitations of that guarantee.
If you have already established an accurate, concise mental model, misconceptions and misinformation will not affect you. But if you are still developing that mental model, misconceptions or misinformation may lead you to design a system based on assumptions of guarantees that were never provided. In this chapter, we will be rigorously accurate and concise as we develop a mental model that is also rigorously accurate and concise.