liveBook · Manning

At-most-once delivery

As explained in C# Concurrency: Asynchronous and multithreaded programming

At-most-once delivery is a message-delivery guarantee that delivers a message zero or one time and does not intentionally retry it after loss.

At-most-once delivery removes a message from a persistent queue before processing it. A crash afterward can lose the message, but the system will not intentionally process it again. section 8.2.3

Power loss before processing

A worker removes an item, then the computer loses power before processing begins. After restart, the item is absent and is never processed. This avoids duplicates but permits loss. section 8.2.3

Use this guarantee when:

  • Losing an item is preferable to processing it twice. section 8.2.3
  • You have assessed persistent-queue behavior alongside at-least-once delivery and poison-message handling. section 8.2.3 section 8.3

How C# Concurrency: Asynchronous and multithreaded programming covers it

How deep it goes
Defines the guarantee through a crash scenario and contrasts it with at-least-once and usually impossible exactly-once delivery.
Examples
Uses power loss between queue removal and processing as its concrete failure example.
What it assumes
Assumes persistent queues and basic awareness of processing crashes and restarts.
What you can do after
Evaluate whether message loss is preferable to duplicate processing when selecting a persistent-queue guarantee.
How it connects
Connects persistent queues with at-least-once delivery, exactly-once delivery, and poison messages.

Also explained in

Compare how 5 books explain at-most-once delivery →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of C# Concurrency: Asynchronous and multithreaded programming. The section links point to the parts of the book it draws on.