Capacity Estimates
Alarm Thresholds (at capacity: 100GB)
Warning (50% - 50GB)
in ~24h
Critical (80% - 80GB)
in ~38h
Scenario Comparison
Spike (5x throughput)
4,320 MB/day
Degraded (10% error)
8,640 MB/day
DLQ Growth Projection (14 days)
Retry Cascade Visualization
Cost Estimation
AWS SQS (million requests)
$0.40
Storage (per GB/month)
$0.10
RabbitMQ (disk/month)
$5.00
Total Monthly Estimate
$5.50
Infrastructure as Code
AWS SQS (CloudFormation)
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MainQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: main-queue
VisibilityTimeout: 300
MessageRetentionPeriod: 1209600
DeadLetterQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: main-queue-dlq
MessageRetentionPeriod: 1209600
QueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
Queues: [!GetAtt MainQueue.Arn]
RedrivePolicy:
deadLetterTargetArn: !GetAtt DeadLetterQueue.Arn
maxReceiveCount: 3
Terraform
resource "aws_sqs_queue" "main" {
name = "main-queue"
visibility_timeout_seconds = 300
message_retention_seconds = 1209600
redrive_policy = jsonencode({
deadLetterTargetArn = aws_sqs_queue.dlq.arn
maxReceiveCount = 3
})
}
resource "aws_sqs_queue" "dlq" {
name = "main-queue-dlq"
message_retention_seconds = 1209600
}
Docker Compose (RabbitMQ)
services:
rabbitmq:
image: rabbitmq:3.12-management
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
volumes:
- rabbitmq_data:/var/lib/rabbitmq
config-dlq:
image: rabbitmq:3.12
command: |
rabbitmq-plugins enable rabbitmq_management && \
rabbitmqctl add_queue main_queue && \
rabbitmqctl add_queue main_dlq && \
rabbitmqctl set_policy dlx_policy "^main_queue\$" \
'{"dead-letter-exchange":"dlx_exchange"}'