Design: Dead Letter Queue System
Design focuses on the dead letter queue mechanism integrated with a message queue system. Out of scope are the detailed implementations of the primary message processing logic and UI for monitoring.
Functional Requirements
FR1: Capture messages that cannot be processed successfully after multiple retries
FR2: Store failed messages separately for later inspection or reprocessing
FR3: Support configurable retry limits before moving messages to dead letter queue
FR4: Provide monitoring and alerting for dead letter queue size and growth
FR5: Allow manual or automated reprocessing of messages from dead letter queue
FR6: Ensure message order is preserved where applicable
FR7: Integrate with existing message queue systems (e.g., RabbitMQ, Kafka, AWS SQS)
Non-Functional Requirements
NFR1: Handle up to 100,000 messages per minute
NFR2: Retry attempts must not exceed 5 per message
NFR3: Dead letter queue must be highly available with 99.9% uptime
NFR4: Latency for normal message processing should remain under 200ms
NFR5: System must support message retention in dead letter queue for at least 7 days