0% found this document useful (0 votes)
8 views

AWS - Difference Between SQS and SNS

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

AWS - Difference Between SQS and SNS

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

AWS — Difference between

SQS and SNS


Ashish Patel
Follow
May 25, 2019 · 4 min read

Comparisons: SQS vs SNS in AWS — Simple Notification Service


and Simple Queue Service.

SNS and SQS

TL;DR

SQS and SNS are important components for scalable, large scale,
distributed, cloud-based applications:
SNS is a distributed publish-subscribe service.

SQS is distributed queuing service.

SNS (Simple Notification Service)

SNS

Amazon SNS is a fast, flexible, fully managed push notification


service that lets you send individual messages or to bulk messages to
large numbers of recipients. Amazon SNS makes it simple and cost
effective to send push notifications to mobile device users, email
recipients or even send messages to other distributed services.
A distributed publish-subscribe system. Messages are pushed to
subscribers as and when they are sent by publishers to SNS ,SNS
supports several end points such as email, sms, http end point and
SQS. If you want unknown number and type of subscribers to receive
messages, you need SNS.

With Amazon SNS, you can send push notifications to Apple, Google,
Fire OS, and Windows devices , as well as to Android devices in
China with Baidu Cloud Push. You can use SNS to send SMS
messages to mobile device users in the US or to email recipients
worldwide.

SNS is a distributed publish-subscribe system. Messages


are pushed to subscribers as and when they are sent by publishers to
SNS.

SQS (Simple Queue Service)

SQS
SQS is distributed queuing system. Messages are not pushed to
receivers. Receivers have to poll SQS to receive messages. Messages
can’t be received by multiple receivers at the same time. Any one
receiver can receive a message, process and delete it. Other receivers
do not receive the same message later.
Polling inherently introduces some latency in message delivery in SQS
unlike SNS where messages are immediately pushed to subscribers.

SQS is mainly used to decouple applications or integrate applications.


Messages can be stored in SQS for short duration of time (max 14
days). SNS distributes several copies of message to several
subscribers. For example, lets say you want to replicate data generated
by an application to several storage systems. You could use SNS and
send this data to multiple subscribers, each replicating the messages it
receives to different storage systems (s3, hard disk on your host,
database, etc.).

SNS supports several end points such as email, sms, http end point and
SQS. If you want unknown number and type of subscribers to receive
messages, you need SNS.

Key Differences
Entity Type
SQS : Queue (similar to JMS, MSMQ).
SNS : Topic-Subscriber (Pub/Sub system).
Message consumption
SQS : Pull Mechanism — Consumers poll messages from SQS.
SNS : Push Mechanism — SNS pushes messages to consumers.

Persistence
SQS : Messages are persisted for some duration is no consumer
available. The retention period value is from 1 minute to 14 days. The
default is 4 days.
SNS : No persistence. Whichever consumer is present at the time of
message arrival, get the message and the message is deleted. If no
consumers available then the message is lost.

In SQS the message delivery is guaranteed but in SNS it is not.

Consumer Type
SQS : All the consumers are supposed to be identical and hence
process the messages in exact same way.
SNS : All the consumers are (supposed to be) processing the messages
in different ways.

Use Cases
Choose SNS if:

 You would like to be able to publish and consume


batches of messages.

 You would like to allow same message to be


processed in multiple ways.
 Multiple subscribers are needed.

Choose SQS if:

 You need a simple queue with no particular additional


requirements.

 Decoupling two applications and allowing parallel


asynchronous processing.

 Only one subscriber is needed.

We can design fanout pattern by using both SNS and SQS. In this
pattern, a message published to an SNS topic is distributed to multiple
SQS queues in parallel.

Summary
You don’t have to couple SNS and SQS always. You can have SNS
send messages to email, sms or http end point apart from SQS. There
are advantages to coupling SNS with SQS. You may not want an
external service to make connections to your hosts (firewall may block
all incoming connections to your host from outside). Your end point
may just die because of heavy volume of messages. Email and SMS
maybe not your choice of processing messages quickly. By coupling
SNS with SQS, you can receive messages at your pace. It allows
clients to be offline, tolerant to network and host failures. You also
achieve guaranteed delivery. If you configure SNS to send messages
to an http end point or email or SMS, several failures to send message
may result in message being dropped.
SQS is mainly used to decouple applications or integrate applications.
Messages can be stored in SQS for short duration of time (max 14
days). SNS distributes several copies of message to several
subscribers. For example, lets say you want to replicate data generated
by an application to several storage systems. You could use SNS and
send this data to multiple subscribers, each replicating the messages it
receives to different storage systems (s3, hard disk on your host,
database, etc.).

You might also like