CodePark/ questions / Retries, poison messages & DLQs
START PRACTICINGPRACTICE
Backend question · Message queues & streaming › Retries, poison messages & DLQs

Which failure should send a message to the dead-letter queue immediately instead of retrying it with backoff?

The payload fails schema validation because a required field is missing

"The payload fails schema validation because a required field is missing" is correct. A malformed payload fails in the same way on every attempt. Retries only waste time and delay other messages.

The other failures are transient, which means temporary:

• "The database returned a connection timeout"

• "A downstream API responded with HTTP 503"

• "A deadlock was detected and the transaction was rolled back"


The same message usually succeeds a little later. So these deserve retries with backoff before you give up.