I'm looking at possibly implementing a dead-letter queue for a queue being used by a set of services to communicate with each other.
Something that's been lingering at the back of my head is how it solves the problem of un-processed messages.
The way I see it, a message will not be processed in one of two scenarios:
- The message itself cannot be processed for some reason intrinsic to the message (like it's improperly formatted).
- The application receiving the message has no capacity to process it.
In scenario 1, holding the message in the dead-letter queue as-is does nothing. The application still can't process it.
In scenario 2, the application would somehow need to also process messages from the dead-letter queue. But, if it doesn't have the capacity to process messages from its main queue, why would it have capacity to pick up work from a second queue?
There must be something I'm missing.