Amazon Web Services provides powerful messaging services tailored to various use cases. Two prominent ones in this regard are the Amazon Simple Queue Service (Amazon SQS) and Amazon Simple Notification Service (Amazon SNS). Both these services are integral parts of distributed computing systems and understanding them is crucial for the AWS Certified Developer – Associate exam.
Amazon Simple Queue Service (SQS)
Amazon Simple Queue Service (SQS) is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications.
SQS offers two kinds of message queues:
- Standard Queues: Provides maximum throughput, best-effort ordering, and at-least-once message delivery
- FIFO Queues: Are designed to guarantee that messages are processed exactly once, in the exact order that they are sent
Benefits of SQS are:
- Elimination of administrative overhead
- Automatic scaling to high demand
- Reliable message delivery
Example usage of SQS with AWS SDK for Node.js:
<code>
import {SQS, config} from ‘aws-sdk’;
config.update({region: ‘us-west-2’});
const sqs = new SQS({apiVersion: ‘2012-11-05’});
const params = { MessageBody: ‘My Message’, QueueUrl: ‘MyQueueURL’ };
sqs.sendMessage(params, (err, data) => {
if (err) console.log(err, err.stack);
else console.log(data);
});
</code>
Amazon Simple Notification Service (SNS)
Amazon Simple Notification Service (SNS) is a fully managed messaging service for application-to-application and application-to-person communication.
The principal concepts in SNS are topics and subscriptions:
- Topics: A communication channel to send messages and subscribe to notifications
- Subscriptions: The relationship between a topic and its recipients
Benefits of SNS are:
- Simple to set up and manage
- Scalable to support high throughput
- Cost-effective
Example usage of SNS with AWS SDK for Python (boto3):
<code>
import boto3
sns = boto3.client(‘sns’, region_name=’us-west-2′)
response = sns.publish(
TopicArn=’arn:aws:sns:us-west-2:123456789012:MyTopic’,
Message=’My Message’,
)
print(response[‘MessageId’])
</code>
Comparison
Amazon SQS | Amazon SNS | |
---|---|---|
Intended use | Decoupling of microservices | Fanout messages to multiple recipients |
Message consumption | Pull-based | Push-based |
Message delivery type | One-to-One | One-to-Many |
Guaranteed message ordering | Available in FIFO queues | Not guaranteed |
Guaranteed at-least-once delivery | Yes | Yes |
By understanding the key differences and use cases of SQS and SNS, developers can ensure that they select the messaging service best suited to their application’s needs. Having a solid handle on these concepts is also a critical part of the AWS Certified Developer – Associate exam.
Practice Test
True/False: Amazon Simple Queue Service (SQS) is a messaging service for coordinating the sending, receiving, and processing of messages between disparate systems.
- Answer: True
Explanation: Indeed, Amazon SQS allows for the decoupling of independent systems, ensuring that they can operate without being simultaneously active.
Which of the following is NOT a feature of Amazon Simple Notification Service (SNS)?
- A. Pub/Sub messaging
- B. Direct messaging
- C. Message durability
- D. Automatic scaling
Answer: B. Direct messaging
Explanation: Amazon SNS is indeed a fully managed pub/sub messaging service, it does not provide direct messaging functionality like personal chatting.
True/False: SQS Standard Queues ensure that messages are delivered exactly once and in the exact order in which they are sent.
- Answer: False
Explanation: The standard SQS queue offers maximum throughput, best-effort ordering, and at-least-once delivery. For exactly-once and ordered delivery, one should use SQS FIFO queues.
In Amazon SNS, the process of pushing messages to multiple subscribing endpoints is known as what?
- A. Multi-casting
- B. Broadcasting
- C. Mirroring
- D. Reflecting
Answer: B. Broadcasting
Explanation: Amazon SNS is designed to push messages to multiple endpoints or ‘subscribers’, making it a perfect solution for broadcasting notifications and messages.
Which AWS messaging service will be better for a system where the order of tasks is important?
- A. Amazon Simple Queue Service
- B. Amazon Simple Notification Service
- C. Amazon Simple Email Service
- D. None of the above
Answer: A. Amazon Simple Queue Service
Explanation: SQS introduced FIFO (First In First Out) queues where the order of tasks is strictly maintained.
True/False: In Amazon SNS you can filter the messages to specific subscribers.
- Answer: True
Explanation: Amazon SNS allows message filtering by assigning attributes to publish messages and allowing subscribers to set a filter policy on these attributes.
Amazon SNS supports which of the following types of endpoints for message delivery?
- A. HTTP/HTTPS
- B. Email
- C. SQS Queues
- D. All of the above
Answer: D. All of the above
Explanation: Amazon SNS can deliver messages to a variety of endpoints, including HTTP/HTTPS, email, and Amazon SQS queues.
True/False: Automatically scaling your applications based on demand is a feature of Amazon SQS.
- Answer: True
Explanation: SQS can dynamically scale the throughput of message processing to meet the demand of message traffic patterns.
Which AWS service is a fully managed in-memory data store service for real-time applications?
- A. Amazon SNS
- B. Amazon SQS
- C. Amazon DynamoDB
- D. None of the above
Answer: D. None of the above
Explanation: The correct answer is Amazon ElastiCache, which provides a fully managed in-memory data store service for real-time applications.
True/False: Amazon SQS offers a secure, fault-tolerant environment to send, store, and receive messages between disparate systems.
- Answer: True
Explanation: Indeed, one of the strengths of SQS is that it offers highly secure, reliable message queuing solutions for applications.
What type of architecture does Amazon SNS support?
- A. Push-Push
- B. Pull-Pull
- C. Push-Pull
- D. Pull-Push
Answer: A. Push-Push
Explanation: Amazon SNS supports a push architecture where it pushes a message to multiple subscribers.
True/False: Amazon SNS allows you to group multiple topics into categories.
- Answer: False
Explanation: In Amazon SNS, topics are separate entities used to group multiple subscriptions for the same type of event. There is no feature to group topics into categories.
Which AWS service allows to retain unprocessed messages for a specified period?
- A. Amazon SNS
- B. Amazon SQS
- C. Amazon SES
- D. None of the above
Answer: B. Amazon SQS
Explanation: Amazon SQS retains messages that could not be processed. You can set the retention period to a value between 1 minute and 14 days.
True/False: You can directly publish messages to Amazon SQS from S3 without using SNS.
- Answer: False
Explanation: To publish a message from S3 to SQS, you generally use SNS as a mediator.
Which feature of Amazon SNS can be used to prevent a subscriber from receiving certain messages?
- A. Subscription endpoints
- B. Message attributes
- C. SNS Filters
- D. All of the above
Answer: C. SNS Filters
Explanation: SNS message filtering allows subscribers to specify a filter policy so that they only receive the subset of topic messages that match the attributes they’re interested in.
Interview Questions
What is Amazon Simple Queue Service (SQS)?
Amazon Simple Queue Service (SQS) is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications. It provides a reliable and scalable hosted queue for storing messages in transit between computers.
What is the Amazon Simple Notification Service (SNS)?
Amazon Simple Notification Service (SNS) is a web service that coordinates and manages the delivery or sending of messages to subscribing endpoints or clients.
What is the maximum message retention period in Amazon SQS?
The maximum message retention period on Amazon SQS is 14 days.
What types of queues does Amazon SQS provide?
Amazon SQS provides two types of queues, Standard Queues which offers maximum throughput, best-effort ordering, and at-least-once delivery and FIFO (First-In-First-Out) Queues which are designed to guarantee that messages are processed exactly once, in the exact order that they are sent.
What types of messages does Amazon SNS support?
Amazon SNS supports both direct sending (point-to-point) and published/subscribe (pub/sub) messaging patterns.
How does Amazon SNS differ from Amazon SQS?
Amazon SNS allows applications to send time-critical messages to multiple subscribers through a “push” mechanism, eliminating the need to periodically check or “poll” for updates, while Amazon SQS is mainly used to decouple applications or integrate applications. Messages are not pushed to receivers, they have to poll SQS for the messages.
How can you secure messages in Amazon SQS?
Messages in Amazon SQS can be secured using AWS Key Management Service (KMS) keys and AWS Identity and Access Management (IAM) policies.
What is long polling in Amazon SQS?
Long polling is a way to retrieve messages from your Amazon SQS queues. While the regular short polling returns immediately, even if the message queue being polled is empty, long polling doesn’t return a response until a message arrives in the message queue, or the long poll times out.
Can we have a mix of Amazon SQS and SNS in a single application?
Yes, Amazon SQS and SNS can be used together for multiple purposes. For example, you can use SNS to send notifications while using SQS to decouple services inside an application.
Is there a way to delete many messages at once from Amazon SQS?
Yes, you can use the ‘DeleteMessageBatch’ action to delete up to ten messages at once.
What is fanout pattern in Amazon SNS?
The fanout pattern is used to deliver a copy of the same message to multiple endpoints, doing this simultaneously. For example, you could use Amazon SNS to send a notification that is then received and processed by multiple SQS queues, Lambda functions, or HTTP endpoints, among other things.
Does Amazon SQS guarantee the delivery order of messages?
Standard queues do not guarantee the exact delivery order of messages. However, FIFO queues are specifically designed to guarantee that messages are processed exactly once, in the exact order that they are sent.
Is it possible to schedule message delivery in Amazon SNS?
No, currently Amazon SNS does not support scheduling messages. Messages are delivered as soon as they are published.
Can Amazon SQS move data between different AWS regions?
No, Amazon SQS does not support cross-region replication. Each queue is unique to a specific region.
What happens if the processing of a message fails in Amazon SQS?
If the processing of the message fails, Amazon SQS can help you manage that error by using Dead Letter Queues, where unprocessed messages due to errors during normal processing are sent to for further investigation or retries.