Amazon SQS create and test queue

How to create an Amazon SQS queue and test with Amazon SNS?

The step by step procedure to create an Amazon SQS queue and later test it with Amazon SNS.

Testing Amazon SQS queue!

What is an Amazon SQS?

Amazon SQS (Simple Queue Service) is the very first AWS service. It’s a message queueing service that helps with decoupling the architecture. It’s widely used in microservices designs. It’s a poll based service. So basically, it receives messages from some source, maintains messages in the queue for consumers to poll for it, consume it, and delete it after processing.

Using SQS, one need not keep consumer compute/infrastructure up and running all the time. SQS takes care of buffering and queueing messages, and consumers can poll them once a while, processes them, and exists/shuts them till the next poll. It also holds messages if consumers are not available or busy and scales accordingly, so you don’t lose any messages.

Amazon SQS offers two types on queue and their differences are as below –

Standard QueueFIFO Queue
Default SQS queueFirst in first out queue
Messages order is not preservedPreserved messages order which is first in first out
message can be processed twiceEach messages processed exactly once
It can scale indefinitelyIt can processes 3000 messages per seconds only
Best fit for scaling and high throughput requirementBest fit where order is important and duplicates cant be tolerated
No naming restrictionsQueue name must ends with .fifo suffix.

Lets dive into creating our first SQS queue.

How to create Amazon SQS queue?

  • Log in to an Amazon SQS dashboard
  • Click on the Create queue button on the introduction page.
  • Create a queue wizard should open up –
Create queue screen
  • Details
    • Choose the type of queue
      • Standard
      • FIFO
    • Name: Enter the queue name. For the FIFO queue, the name should have a .fifo suffix.
SQS queue configuration
  • Configuration
    • Visibility timeout: Time for which message won’t be visible to other consumers when picked up by consumer for processing. Range 0 secs to 12 hours
    • Messages retention period: Duration for which messages live in the queue if not deleted by any consumers. Range 1 min to 14 days
    • Delivery delay: Time for which message won’t be visible to consumers to pick once the queue receives it. Range 0 sec to 15 min. 0 means the message will be available immediately for processing once received by the queue.
    • Maximum message size: Message size. Range 1KB to 256KB
    • Receive message wait time: Max time for polling to wait for messages to be available. 0 means short polling (increases empty responses), and 20 means long polling—range 0 to 20 secs.
SQS queue access policy
  • Access policy
    • Basic
      • Simple bullet selections for access to send and receive messages to/from the queue. JSON will be generated accordingly.
    • Advanced
      • Use your own JSON to define policies
SQS optional settings

Three optional configurations for SQS queue.

  • Encryption: Server-side encryption offered by AWS.
  • Dead-letter queue: Home for undeliverable messages.
  • Tags: For identification purposes.

Click on Create queue button.

SQS should create a queue and present you with queue details.

SQS queue created!

You can click on the Send and receive messages button to manually send, receive, and delete messages in this queue.

Send message to SQS queue manually

Enter the message body and click on the Send message button. The message will be sent to the SQS queue.

If you scroll down on the same screen, you can click the Poll for messages button and receive the messages from the SQS queue you sent in the earlier step.

Receive message from SQS queue manually

Click on message ID to view message details. Under the message body tab, you can see the message body.

Message details

Once messages are processed (i.e., read in our case), you can delete messages from the queue by choosing a message and clicking the Delete button.

Sending messages to SQS queue from SNS

We walked through sending and receiving messages manually to and from the SQS queue. Now we will do it using SNS. SNS is a Simple notification Service offered by AWS. SNS topics are the channels where you publish messages for recipients. It’s a push-based service.

I already created an SNS topic named sns-topic-001 to which the SQS queue will be subscribed.

On an SQS queue details page click on the Subscribe to Amazon SNS topic button.

Subscribing SQS to SNS Topic

You should be able to select the existing SNS topic from the drop-down on the next page.

Choosing SNS topic for subscription

Click Save button.

  • Login to the SNS dashboard
  • Click on the Topic you created
  • In the Topic details screen, click on the Publish message button.
  • Make sure you see the SQS queue under Subscriptions.
SNS Topic details

Fill in message details like Subject and body and click the Publish message button.

Publish message to SNS Topic

Now the message is published to the SNS topic. We have an SQS queue that is subscribed to SNS Topic. That means this published message should appear in the SQS queue.

Lets go back to SQS queue and check for it.

SNs message received in SQS

You should see 1 message available to receive in SQS. And when you click the Poll for messages button, you will see that message in the messages details section below.

If you check message body you will see all SNS formatted message details.

Message details

In this way, you can check the SQS queue’s functionality by sending and receiving messages manually or using SNS Topic. You can even receive messages automatically using the Lambda function and then publish it to another SNS Topic, which can mail it to you for testing! We might cover this in another article. But this is it for now!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.