flowchart LR
P[Producer] --> T[SNS topic]
T --> Q1[SQS queue: billing]
T --> Q2[SQS queue: email]
Q1 --> W1[Worker]
Q2 --> W2[Worker]
| Service | Model | Use it for |
|---|---|---|
| SQS | Queue; consumers pull messages | Buffering work, smoothing spikes, retries |
| SNS | Pub/sub; pushes to many subscribers | Fan-out, notifications to email, SMS, queues, Lambda |
| EventBridge | Event bus with rules and filtering | Reacting to AWS events, SaaS events and schedules |
aws sqs create-queue --queue-name orders-dlq --region ap-south-1
aws sqs create-queue --queue-name orders \
--attributes '{"VisibilityTimeout":"60","RedrivePolicy":"{\"deadLetterQueueArn\":\"arn:aws:sqs:ap-south-1:111122223333:orders-dlq\",\"maxReceiveCount\":\"5\"}"}'
Always attach a dead-letter queue so poison messages do not loop forever. SQS delivers at least once, so consumers must tolerate duplicates; use a FIFO queue when order matters. Fan-out (SNS to several SQS queues) lets each consumer fail and retry independently.