Eventual Retry / Poison Message Handling

Problem

A message fails because the database is temporarily unavailable. Retrying makes sense. Another message fails because its data is permanently invalid. Retrying it 50,000 times does not.

Solution — Retry Policy + DLQ

Classify failures and bound retries.
Transient → retry
Permanent → DLQ
Core idea: resilient messaging distinguishes failures that may recover from messages that require intervention.