.NET Architecture & System Design Interview Question #47

What is message idempotency?

Caching, CDN, Queues & Asynchronous Processing Junior Beginner

Quick Interview Answer

Message idempotency ensures that processing the same logical message more than once does not create unintended duplicate business effects.

Detailed Explanation

Message idempotency ensures that processing the same logical message more than once does not create unintended duplicate business effects.

A consumer can store processed message IDs, use a business idempotency key, enforce a unique database constraint, or design the state transition itself to be idempotent. The mechanism should be durable when duplicate delivery can occur after process restarts.

Code Example

if (await processed.ExistsAsync(message.Id))
    return;

await HandleAsync(message);
await processed.MarkAsync(message.Id);