Bird
Raised Fist0
AWScloud~5 mins

Dead letter queues in AWS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Dead Letter Queue (DLQ) in AWS?
A Dead Letter Queue is a special queue that stores messages that could not be processed successfully by the main queue after multiple attempts. It helps isolate and analyze failed messages without losing them.
Click to reveal answer
beginner
Why use a Dead Letter Queue?
To prevent message loss, isolate problematic messages, and allow troubleshooting without blocking the main queue's processing flow.
Click to reveal answer
intermediate
How does AWS SQS handle messages that fail processing?
If a message fails processing multiple times, it is moved to the Dead Letter Queue if configured, so it can be reviewed and handled separately.
Click to reveal answer
intermediate
What is the main configuration needed to enable a Dead Letter Queue in AWS SQS?
You must set a Redrive Policy on the source queue, specifying the target DLQ ARN and the maximum receive count before moving messages to the DLQ.
Click to reveal answer
intermediate
Can Dead Letter Queues be used with AWS Lambda event sources?
Yes, AWS Lambda can be configured to send failed asynchronous invocation events to a Dead Letter Queue for later analysis.
Click to reveal answer
What happens to a message in AWS SQS when it exceeds the maximum receive count?
AIt is moved to the Dead Letter Queue if configured.
BIt is deleted immediately.
CIt is sent back to the sender.
DIt is processed again without limit.
Which AWS service uses Dead Letter Queues to handle failed asynchronous events?
AAmazon RDS
BAmazon EC2
CAWS CloudTrail
DAWS Lambda
What is required to configure a Dead Letter Queue for an SQS queue?
ASet a Redrive Policy with DLQ ARN and max receive count.
BEnable encryption on the queue.
CCreate a CloudWatch alarm.
DAttach an IAM role to the queue.
What is the main benefit of using a Dead Letter Queue?
ATo speed up message processing.
BTo isolate and analyze failed messages without losing them.
CTo automatically delete old messages.
DTo encrypt messages in transit.
Can a Dead Letter Queue receive messages from multiple source queues?
AOnly if the queues are in different regions.
BNo, each DLQ can only be linked to one source queue.
CYes, a DLQ can be shared by multiple source queues.
DOnly if the queues use FIFO.
Explain what a Dead Letter Queue is and why it is important in AWS messaging services.
Think about what happens when messages can't be processed.
You got /4 concepts.
    Describe how to configure a Dead Letter Queue for an AWS SQS queue.
    Focus on the key settings in the source queue.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a Dead Letter Queue (DLQ) in AWS SQS?
      easy
      A. To speed up message delivery by duplicating messages
      B. To store messages that failed processing to keep the main queue clean
      C. To permanently delete messages after processing
      D. To encrypt messages for security

      Solution

      1. Step 1: Understand the role of DLQ

        A Dead Letter Queue is designed to hold messages that cannot be processed successfully after multiple attempts.
      2. Step 2: Compare options with DLQ purpose

        Only To store messages that failed processing to keep the main queue clean correctly describes storing failed messages to keep the main queue clean.
      3. Final Answer:

        To store messages that failed processing to keep the main queue clean -> Option B
      4. Quick Check:

        DLQ stores failed messages [OK]
      Hint: DLQ holds failed messages, not speeding or deleting [OK]
      Common Mistakes:
      • Thinking DLQ speeds up delivery
      • Confusing DLQ with message deletion
      • Assuming DLQ encrypts messages
      2. Which of the following is the correct way to configure a Dead Letter Queue in AWS SQS using RedrivePolicy?
      easy
      A. {"deadLetterTargetArn":"arn:aws:sqs:region:account-id:DLQ","maxReceiveCount":5}
      B. {"maxReceiveCount":5,"deadLetterQueueArn":"arn:aws:sqs:region:account-id:DLQ"}
      C. {"deadLetterQueue":"arn:aws:sqs:region:account-id:DLQ","maxRetries":5}
      D. {"targetArn":"arn:aws:sqs:region:account-id:DLQ","maxReceiveCount":10}

      Solution

      1. Step 1: Identify correct RedrivePolicy keys

        The correct keys are "deadLetterTargetArn" and "maxReceiveCount" as per AWS documentation.
      2. Step 2: Match options with correct keys

        Only {"deadLetterTargetArn":"arn:aws:sqs:region:account-id:DLQ","maxReceiveCount":5} uses "deadLetterTargetArn" and "maxReceiveCount" correctly.
      3. Final Answer:

        {"deadLetterTargetArn":"arn:aws:sqs:region:account-id:DLQ","maxReceiveCount":5} -> Option A
      4. Quick Check:

        Correct keys = deadLetterTargetArn + maxReceiveCount [OK]
      Hint: Look for deadLetterTargetArn and maxReceiveCount keys [OK]
      Common Mistakes:
      • Using wrong key names like deadLetterQueueArn
      • Confusing maxRetries with maxReceiveCount
      • Swapping key order incorrectly
      3. Given the following SQS queue configuration with a DLQ and maxReceiveCount set to 3, what happens when a message fails processing 4 times?
      {"RedrivePolicy": {"deadLetterTargetArn": "arn:aws:sqs:region:account-id:DLQ", "maxReceiveCount": 3}}
      medium
      A. The message is moved to the Dead Letter Queue after the 4th failure
      B. The message is deleted immediately after the 3rd failure
      C. The message stays in the main queue indefinitely
      D. The message is moved to the DLQ after the 3rd failure

      Solution

      1. Step 1: Understand maxReceiveCount meaning

        maxReceiveCount defines how many times a message can be received before moving to DLQ.
      2. Step 2: Apply maxReceiveCount to message failures

        After 3 failed receives, the message is moved to the DLQ, not after the 4th.
      3. Final Answer:

        The message is moved to the DLQ after the 3rd failure -> Option D
      4. Quick Check:

        maxReceiveCount = 3 means move to DLQ after 3 failures [OK]
      Hint: Message moves to DLQ exactly at maxReceiveCount failures [OK]
      Common Mistakes:
      • Thinking message moves after 4th failure
      • Assuming message is deleted after failures
      • Believing message stays in main queue forever
      4. You configured a DLQ with maxReceiveCount set to 5, but messages are not moving to the DLQ after 5 failed processing attempts. What is the most likely cause?
      medium
      A. maxReceiveCount must be set to 1 for DLQ to work
      B. The DLQ ARN is invalid but messages still move to DLQ
      C. The RedrivePolicy is missing or incorrectly attached to the main queue
      D. Messages are deleted automatically after 3 failures regardless of DLQ

      Solution

      1. Step 1: Check RedrivePolicy attachment

        If RedrivePolicy is missing or not attached properly, messages won't move to DLQ.
      2. Step 2: Validate other options

        Invalid ARN would cause errors, maxReceiveCount can be any positive number, and messages are not deleted automatically without DLQ.
      3. Final Answer:

        The RedrivePolicy is missing or incorrectly attached to the main queue -> Option C
      4. Quick Check:

        DLQ requires correct RedrivePolicy attachment [OK]
      Hint: Verify RedrivePolicy is attached to main queue [OK]
      Common Mistakes:
      • Ignoring RedrivePolicy attachment
      • Assuming invalid ARN still works
      • Believing maxReceiveCount must be 1
      5. You have an SQS queue with a DLQ configured and maxReceiveCount set to 4. You want to ensure that messages that fail processing due to a temporary downstream service outage are retried multiple times before moving to the DLQ. Which approach best achieves this?
      hard
      A. Set maxReceiveCount to 4 and implement exponential backoff in the message consumer
      B. Set maxReceiveCount to 1 and rely on DLQ for retries
      C. Remove the DLQ and increase message visibility timeout
      D. Set maxReceiveCount to 10 and disable retries in the consumer

      Solution

      1. Step 1: Understand retry and DLQ roles

        maxReceiveCount controls how many times a message is retried before DLQ. Exponential backoff helps avoid flooding retries.
      2. Step 2: Evaluate options for retry strategy

        Set maxReceiveCount to 4 and implement exponential backoff in the message consumer combines proper maxReceiveCount with backoff to handle temporary failures effectively.
      3. Step 3: Reject other options

        Removing the DLQ is counterproductive as it's needed for persistent failures. Setting maxReceiveCount to 1 limits retries too much. Setting maxReceiveCount to 10 and disabling retries in the consumer is not effective for temporary outages.
      4. Final Answer:

        Set maxReceiveCount to 4 and implement exponential backoff in the message consumer -> Option A
      5. Quick Check:

        Retries + backoff before DLQ = best practice [OK]
      Hint: Use maxReceiveCount with backoff for retries before DLQ [OK]
      Common Mistakes:
      • Setting maxReceiveCount too low
      • Removing DLQ mistakenly
      • Disabling retries in consumer
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard