.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);