Need advice about which tool to choose?Ask the StackShare community!
Amazon SNS vs Amazon SQS: What are the differences?
Introduction
Amazon Simple Notification Service (SNS) and Amazon Simple Queue Service (SQS) are both messaging services provided by Amazon Web Services (AWS). They are designed to help developers build scalable, decoupled, and fault-tolerant applications.
1. Message Distribution Model:
Amazon SNS uses a publish-subscribe (pub/sub) messaging model, where a single message is delivered to multiple subscribed endpoints. On the other hand, Amazon SQS uses a distributed queuing model, where messages are stored in a queue and processed by consumers at their own pace.
2. Message Retention:
In Amazon SNS, messages are not retained. Once a message is published, it will be delivered to the subscribed endpoints, or discarded if the endpoints are not available. In contrast, Amazon SQS retains messages in a queue until they are explicitly deleted by the consumer.
3. Message Duplication:
Amazon SNS may deliver duplicate messages in certain failure scenarios, but it provides built-in support for deduplication using message attributes. On the other hand, Amazon SQS ensures that each message is delivered at least once and does not deliver duplicates, making it suitable for applications that require strict message ordering.
4. Subscription Protocols:
Amazon SNS supports various subscription protocols such as HTTP/HTTPS, email, SMS, Lambda, and more. It allows flexibility in reaching different types of endpoints. In contrast, Amazon SQS only supports messaging via HTTP/HTTPS.
5. Pricing Model:
Amazon SNS charges based on the number of messages published and the number of API requests made. Amazon SQS charges based on the number of messages transferred in and out of the queue, as well as the number of API requests made.
6. Message Fanout and Delivery Time:
Amazon SNS enables immediate message fanout to multiple subscribers, providing near-real-time message delivery. Amazon SQS, being a queue-based service, offers a delay feature to control the delivery time of messages.
In summary, Amazon SNS uses a pub/sub model, allows various subscription protocols, and incurs charges based on messages published, while Amazon SQS uses a queuing model, supports only HTTP/HTTPS messaging, and charges based on messages transferred.
I want to schedule a message. Amazon SQS provides a delay of 15 minutes, but I want it in some hours.
Example: Let's say a Message1 is consumed by a consumer A but somehow it failed inside the consumer. I would want to put it in a queue and retry after 4hrs. Can I do this in Amazon MQ? I have seen in some Amazon MQ videos saying scheduling messages can be done. But, I'm not sure how.
Mithiridi, I believe you are talking about two different things. 1. If you need to process messages with delays of more 15m or at specific times, it's not a good idea to use queues, independently of tool SQM, Rabbit or Amazon MQ. you should considerer another approach using a scheduled job. 2. For dead queues and policy retries RabbitMQ, for example, doesn't support your use case. https://medium.com/@kiennguyen88/rabbitmq-delay-retry-schedule-with-dead-letter-exchange-31fb25a440fc I'm not sure if that is possible SNS/SQS support, they have a maximum delay for delivery (maxDelayTarget) in seconds but it's not clear the number. You can check this out: https://docs.aws.amazon.com/sns/latest/dg/sns-message-delivery-retries.html
Pros of Amazon SNS
- Low cost12
- Supports multi subscribers6
Pros of Amazon SQS
- Easy to use, reliable62
- Low cost40
- Simple28
- Doesn't need to maintain it14
- It is Serverless8
- Has a max message size (currently 256K)4
- Triggers Lambda3
- Easy to configure with Terraform3
- Delayed delivery upto 15 mins only3
- Delayed delivery upto 12 hours3
- JMS compliant1
- Support for retry and dead letter queue1
- D1
Sign up to add or upvote prosMake informed product decisions
Cons of Amazon SNS
Cons of Amazon SQS
- Has a max message size (currently 256K)2
- Proprietary2
- Difficult to configure2
- Has a maximum 15 minutes of delayed messages only1