Bird
Raised Fist0
AWScloud~20 mins

SQS queue concept in AWS - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
SQS Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding SQS Message Visibility Timeout

What happens to a message in an AWS SQS queue when a consumer receives it but does not delete it before the visibility timeout expires?

AThe message becomes visible again in the queue and can be received by other consumers.
BThe message is permanently deleted from the queue automatically.
CThe message is moved to a dead-letter queue immediately.
DThe message is duplicated and sent to all consumers.
Attempts:
2 left
💡 Hint

Think about what visibility timeout means for message processing.

❓ service_behavior
intermediate
2:00remaining
SQS Message Retention Period Behavior

If an SQS message is not deleted, how long will it remain in the queue before it is automatically removed?

AMessages are retained for a default of 4 days, configurable up to 14 days.
BMessages remain indefinitely until deleted manually.
CMessages are deleted after 1 hour automatically.
DMessages are deleted immediately after being received.
Attempts:
2 left
💡 Hint

Check the default and maximum retention period for SQS messages.

❓ Architecture
advanced
2:30remaining
Designing for High Throughput with SQS

You need to design an architecture using SQS to handle a very high volume of messages with minimal delay. Which approach best supports this requirement?

AUse a single standard queue with a single consumer to avoid message duplication.
BUse a single standard SQS queue with multiple consumers processing messages in parallel.
CUse multiple FIFO queues with one consumer each to distribute load.
DUse a single FIFO SQS queue with one consumer to maintain order.
Attempts:
2 left
💡 Hint

Consider the difference between standard and FIFO queues and how parallelism affects throughput.

❓ security
advanced
2:30remaining
Securing Access to an SQS Queue

Which method is the most secure way to restrict access to an SQS queue so that only a specific AWS Lambda function can send and receive messages?

AUse a queue policy that allows access from any AWS service.
BMake the queue public and rely on Lambda's internal security.
CAttach an IAM policy to the Lambda function role allowing only that function to access the queue.
DUse a security group to restrict network access to the queue.
Attempts:
2 left
💡 Hint

Think about how AWS controls permissions for services and resources.

✅ Best Practice
expert
3:00remaining
Handling Poison Messages in SQS

You have an SQS queue processing messages, but some messages cause processing failures repeatedly. What is the best practice to handle these 'poison messages' to avoid blocking the queue?

AIncrease the visibility timeout indefinitely for all messages.
BManually monitor and delete failed messages from the main queue.
CDelete messages immediately after receiving them, regardless of processing success.
DConfigure a dead-letter queue (DLQ) and set a maximum receive count to move failing messages to the DLQ.
Attempts:
2 left
💡 Hint

Consider how SQS supports handling messages that fail processing multiple times.

Practice

(1/5)
1. What is the main purpose of an AWS SQS queue?
easy
A. To store messages safely between different parts of a system
B. To run code automatically when triggered
C. To host websites and web applications
D. To store large files like videos and images

Solution

  1. Step 1: Understand what SQS does

    AWS SQS is designed to hold messages so different parts of a system can communicate safely without losing data.
  2. Step 2: Compare options with SQS purpose

    Running code automatically is Lambda's job, hosting websites is for services like S3 or EC2, and storing large files is for S3. Only storing messages fits SQS.
  3. Final Answer:

    To store messages safely between different parts of a system -> Option A
  4. Quick Check:

    SQS = message storage between system parts [OK]
Hint: SQS holds messages, not code or files [OK]
Common Mistakes:
  • Confusing SQS with Lambda or S3
  • Thinking SQS runs code
  • Assuming SQS stores large files
2. Which of the following is the correct way to create a standard SQS queue using AWS CLI?
easy
A. aws sqs create-queue --queue-name MyQueue --attributes DelaySeconds=0
B. aws sqs create-queue MyQueue --delay 0
C. aws sqs new-queue --name MyQueue
D. aws sqs make-queue --queue MyQueue --delay 0

Solution

  1. Step 1: Recall AWS CLI syntax for creating SQS queue

    The correct command uses 'aws sqs create-queue' with '--queue-name' and optional '--attributes'.
  2. Step 2: Check each option's syntax

    aws sqs create-queue --queue-name MyQueue --attributes DelaySeconds=0 matches the correct syntax. Options B, C, and D use incorrect commands or flags.
  3. Final Answer:

    aws sqs create-queue --queue-name MyQueue --attributes DelaySeconds=0 -> Option A
  4. Quick Check:

    Correct CLI syntax = aws sqs create-queue --queue-name MyQueue --attributes DelaySeconds=0 [OK]
Hint: Use 'aws sqs create-queue --queue-name' to create queues [OK]
Common Mistakes:
  • Using wrong command verbs like 'new-queue' or 'make-queue'
  • Missing '--queue-name' flag
  • Incorrect attribute syntax
3. Given this code snippet using AWS SDK to receive messages from an SQS queue, what will be the output if the queue is empty?
const params = { QueueUrl: 'https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue', MaxNumberOfMessages: 1 };
const data = await sqs.receiveMessage(params).promise();
console.log(data.Messages);
medium
A. []
B. null
C. undefined
D. An error is thrown

Solution

  1. Step 1: Understand SQS receiveMessage behavior when empty

    If no messages are available, the 'Messages' property is not included in the response, so data.Messages is undefined.
  2. Step 2: Check what console.log prints

    Logging undefined prints 'undefined' in JavaScript, not null or empty array. No error is thrown.
  3. Final Answer:

    undefined -> Option C
  4. Quick Check:

    Empty queue means data.Messages = undefined [OK]
Hint: Empty queue returns undefined Messages, not empty array [OK]
Common Mistakes:
  • Assuming empty array is returned
  • Expecting null instead of undefined
  • Thinking an error occurs on empty queue
4. You set the VisibilityTimeout of an SQS queue to 30 seconds. A message is received and not deleted. What happens after 30 seconds?
medium
A. The message is deleted automatically
B. The message becomes visible again and can be received again
C. The message is moved to a dead-letter queue
D. The queue stops delivering messages

Solution

  1. Step 1: Understand VisibilityTimeout effect

    VisibilityTimeout hides a message from other consumers for the set time after being received.
  2. Step 2: What happens if message is not deleted after timeout?

    If not deleted, after 30 seconds the message becomes visible again for processing by others.
  3. Final Answer:

    The message becomes visible again and can be received again -> Option B
  4. Quick Check:

    VisibilityTimeout expiry = message visible again [OK]
Hint: VisibilityTimeout hides message temporarily, then shows it again [OK]
Common Mistakes:
  • Thinking message deletes automatically after timeout
  • Confusing dead-letter queue behavior
  • Assuming queue stops working
5. You want to delay processing of messages by 10 minutes after they are sent to an SQS queue. Which configuration should you use?
hard
A. Set the VisibilityTimeout to 600 seconds
B. Set the ReceiveMessageWaitTimeSeconds to 600 seconds
C. Set the MessageRetentionPeriod to 600 seconds
D. Set the DelaySeconds attribute to 600 on the queue or per message

Solution

  1. Step 1: Identify delay setting for message delivery

    DelaySeconds controls how long a message waits before becoming visible after sending.
  2. Step 2: Compare other attributes

    VisibilityTimeout controls message invisibility after receipt, MessageRetentionPeriod controls how long messages stay in queue, ReceiveMessageWaitTimeSeconds controls long polling wait time.
  3. Final Answer:

    Set the DelaySeconds attribute to 600 on the queue or per message -> Option D
  4. Quick Check:

    DelaySeconds = message delivery delay [OK]
Hint: Use DelaySeconds to delay message visibility after sending [OK]
Common Mistakes:
  • Confusing VisibilityTimeout with DelaySeconds
  • Using MessageRetentionPeriod for delay
  • Mistaking ReceiveMessageWaitTimeSeconds for delay
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