← Back to AWS Mastery
Intermediate14 min read

AWS Messaging

Build decoupled, scalable architectures with SQS queues, SNS notifications, EventBridge event routing, and Kinesis stream processing.

Amazon SQS

Simple Queue Service provides managed message queues. Standard queues offer unlimited throughput with at-least-once delivery. FIFO queues guarantee exactly-once processing and ordering.

Producers send messages; consumers poll and process. Visibility timeout hides messages during processing. Dead letter queues (DLQ) capture messages that fail processing repeatedly.

  • Standard queue: best-effort ordering, at-least-once delivery
  • FIFO queue: strict ordering, exactly-once, 300 msg/sec limit
  • Long polling (WaitTimeSeconds: 20) reduces empty responses and cost
// Send message to SQS
import { SQSClient, SendMessageCommand } from '@aws-sdk/client-sqs';

const sqs = new SQSClient({ region: 'us-east-1' });
await sqs.send(new SendMessageCommand({
  QueueUrl: 'https://sqs.us-east-1.amazonaws.com/123/orders',
  MessageBody: JSON.stringify({ orderId: '123', action: 'process' }),
}));

Amazon SNS

Simple Notification Service provides pub/sub messaging. Publishers send to topics; subscribers receive via SQS, Lambda, HTTP, email, or SMS. Fan-out pattern: one message reaches multiple consumers.

Combine SNS + SQS for reliable fan-out — SNS delivers to SQS queues, each consumed independently. Message filtering allows subscribers to receive only relevant messages.

# Create SNS topic with SQS subscription
aws sns create-topic --name order-events
aws sns subscribe \
  --topic-arn arn:aws:sns:us-east-1:123:order-events \
  --protocol sqs \
  --notification-endpoint arn:aws:sqs:us-east-1:123:email-worker

# Filter policy: only order.completed events
aws sns set-subscription-attributes \
  --subscription-arn arn:aws:sns:... \
  --attribute-name FilterPolicy \
  --attribute-value '{"eventType": ["order.completed"]}'

Amazon EventBridge

EventBridge is a serverless event bus connecting AWS services, SaaS applications, and custom applications. Rules match event patterns and route to targets (Lambda, SQS, Step Functions, API destinations).

Use EventBridge for event-driven architectures: decouple services, react to AWS API calls (via CloudTrail), schedule recurring tasks, and integrate third-party SaaS events.

# EventBridge rule: S3 upload triggers processing
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {"name": ["uploads"]},
    "object": {"key": [{"suffix": ".csv"}]}
  }
}

# Schedule: run every day at 2 AM UTC
# ScheduleExpression: cron(0 2 * * ? *)

Amazon Kinesis

Kinesis Data Streams ingests real-time data at scale — clickstreams, IoT sensor data, application logs. Kinesis Data Firehose delivers streams to S3, Redshift, OpenSearch, and third-party services.

Data Streams: custom consumers with shard-based parallelism. Firehose: fully managed delivery with optional transformation. Choose Streams for custom processing, Firehose for delivery pipelines.

# Put record to Kinesis stream
aws kinesis put-record \
  --stream-name clickstream \
  --partition-key user-123 \
  --data "$(echo '{"page": "/home", "timestamp": "2024-01-15T10:00:00Z"}' | base64)"

Messaging Architecture Patterns

Choose the right service: SQS for task queues and work distribution. SNS for notifications and fan-out. EventBridge for event routing and scheduling. Kinesis for real-time streaming analytics.

Implement idempotent consumers — messages may be delivered more than once. Use dead letter queues for failed messages. Monitor queue depth and age of oldest message as key metrics.

# Pattern selection
# Task queue (one consumer per message) → SQS
# Fan-out (multiple consumers) → SNS + SQS
# Event routing (pattern matching) → EventBridge
# Real-time streaming → Kinesis Data Streams
# Data delivery pipeline → Kinesis Firehose
# Cross-service async calls → SQS or EventBridge

Get In Touch


Ready to discuss your next project? Drop me a message.