Bird
Raised Fist0
AWScloud~5 mins

SNS and SQS integration pattern (fan-out) in AWS - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: SNS and SQS integration pattern (fan-out)
O(n)
Understanding Time Complexity

When using SNS to send messages to multiple SQS queues, it's important to understand how the number of queues affects the work done.

We want to know how the number of API calls grows as we add more queues to the fan-out.

Scenario Under Consideration

Analyze the time complexity of sending a message from SNS to multiple SQS queues.


# Create SNS topic
aws sns create-topic --name MyTopic

# Create multiple SQS queues
aws sqs create-queue --queue-name Queue1
aws sqs create-queue --queue-name Queue2
# ... more queues

# Subscribe each SQS queue to the SNS topic
aws sns subscribe --topic-arn arn:aws:sns:region:account-id:MyTopic --protocol sqs --notification-endpoint arn:aws:sqs:region:account-id:Queue1
aws sns subscribe --topic-arn arn:aws:sns:region:account-id:MyTopic --protocol sqs --notification-endpoint arn:aws:sqs:region:account-id:Queue2

# Publish a message to SNS topic
aws sns publish --topic-arn arn:aws:sns:region:account-id:MyTopic --message "Hello"

This sequence sets up SNS to send one message to many SQS queues, creating a fan-out pattern.

Identify Repeating Operations

Look at what happens repeatedly when a message is published.

  • Primary operation: SNS delivers the message to each subscribed SQS queue.
  • How many times: Once per subscribed queue.
How Execution Grows With Input

As you add more queues, SNS sends the message to each one separately.

Input Size (n)Approx. Api Calls/Operations
1010 message deliveries
100100 message deliveries
10001000 message deliveries

Pattern observation: The number of message deliveries grows directly with the number of queues.

Final Time Complexity

Time Complexity: O(n)

This means the work grows linearly as you add more queues to the fan-out.

Common Mistake

[X] Wrong: "Publishing one message to SNS sends it once, no matter how many queues are subscribed."

[OK] Correct: SNS sends a separate copy of the message to each subscribed queue, so the total work increases with the number of queues.

Interview Connect

Understanding how message fan-out scales helps you design systems that handle growing workloads smoothly.

Self-Check

"What if we replaced SQS queues with HTTP endpoints subscribed to SNS? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of using SNS with multiple SQS queues in a fan-out pattern?
easy
A. To send the same message to multiple queues for parallel processing
B. To store messages permanently in one queue
C. To send messages only to one queue at a time
D. To delete messages immediately after sending

Solution

  1. Step 1: Understand SNS role in fan-out

    SNS publishes messages to multiple subscribers simultaneously.
  2. Step 2: Understand SQS role in fan-out

    Each SQS queue receives and holds messages independently for processing.
  3. Final Answer:

    To send the same message to multiple queues for parallel processing -> Option A
  4. Quick Check:

    SNS fan-out = multiple queues get same message [OK]
Hint: SNS fan-out means one message to many queues [OK]
Common Mistakes:
  • Thinking SNS sends to only one queue
  • Confusing message storage with deletion
  • Assuming messages are deleted immediately
2. Which of the following is the correct way to subscribe an SQS queue to an SNS topic using AWS CLI?
easy
A. aws sns subscribe --topic-arn --protocol sqs --notification-endpoint
B. aws sqs subscribe --topic-arn --queue-url
C. aws sns create-subscription --topic --queue
D. aws sns add-queue --topic-arn --queue-arn

Solution

  1. Step 1: Identify correct AWS CLI command

    The AWS CLI command to subscribe is 'aws sns subscribe'.
  2. Step 2: Check parameters for SQS subscription

    Use '--protocol sqs' and '--notification-endpoint' with the queue ARN.
  3. Final Answer:

    aws sns subscribe --topic-arn <topic-arn> --protocol sqs --notification-endpoint <queue-arn> -> Option A
  4. Quick Check:

    Subscribe SQS to SNS uses 'aws sns subscribe' with protocol sqs [OK]
Hint: Subscribe SQS with 'aws sns subscribe' and protocol sqs [OK]
Common Mistakes:
  • Using 'aws sqs subscribe' which does not exist
  • Confusing queue URL with queue ARN
  • Using wrong command like 'aws sns add-queue'
3. Given an SNS topic with two subscribed SQS queues, if a message is published to SNS, what will be the state of the message in the queues?
medium
A. The message is deleted from SNS and not delivered to any queue.
B. The message appears in only one queue randomly.
C. The message appears in both queues independently, waiting to be processed.
D. The message is duplicated in one queue only.

Solution

  1. Step 1: Understand SNS fan-out delivery

    SNS sends a copy of the message to each subscribed queue.
  2. Step 2: Understand SQS message handling

    Each queue holds its own copy until processed or deleted.
  3. Final Answer:

    The message appears in both queues independently, waiting to be processed. -> Option C
  4. Quick Check:

    Fan-out means each queue gets its own message copy [OK]
Hint: SNS fan-out sends message copy to each queue [OK]
Common Mistakes:
  • Thinking message goes to only one queue
  • Assuming message is deleted immediately
  • Believing message duplicates in one queue only
4. You configured an SNS topic with two SQS queues subscribed, but only one queue receives messages. What is the most likely cause?
medium
A. SNS only sends messages to one queue by design
B. The second queue's subscription is not confirmed
C. The message size exceeds SNS limits
D. The first queue deleted the message too fast

Solution

  1. Step 1: Check subscription confirmation

    SQS subscriptions to SNS require confirmation to activate delivery.
  2. Step 2: Understand SNS delivery behavior

    Without confirmation, SNS does not send messages to that queue.
  3. Final Answer:

    The second queue's subscription is not confirmed -> Option B
  4. Quick Check:

    Unconfirmed subscription blocks message delivery [OK]
Hint: Confirm all subscriptions to receive messages [OK]
Common Mistakes:
  • Assuming SNS sends to only one queue
  • Blaming message size without checking subscription
  • Thinking message deletion affects delivery
5. You want to build a system where an SNS topic sends messages to three SQS queues. One queue processes orders, another sends notifications, and the third logs events. How should you configure the system to ensure reliable processing and no message loss?
hard
A. Subscribe only the order queue to SNS and forward messages to others manually
B. Send messages directly to each SQS queue without SNS
C. Use one SQS queue for all processing and filter messages inside the consumer
D. Subscribe all three SQS queues to the SNS topic, enable dead-letter queues for each, and set appropriate message retention

Solution

  1. Step 1: Use SNS fan-out to send messages to all queues

    Subscribing all three SQS queues to the SNS topic ensures each gets the message.
  2. Step 2: Enable dead-letter queues and set retention

    Dead-letter queues catch failed messages; retention ensures messages stay until processed.
  3. Final Answer:

    Subscribe all three SQS queues to the SNS topic, enable dead-letter queues for each, and set appropriate message retention -> Option D
  4. Quick Check:

    Fan-out + DLQ + retention = reliable, no message loss [OK]
Hint: Use fan-out with DLQ and retention for reliability [OK]
Common Mistakes:
  • Skipping dead-letter queues causing message loss
  • Using one queue for all processing causing bottlenecks
  • Not subscribing all queues to SNS topic
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