Tuesday, July 15, 2025

Amazon SQS - Standard Queue vs FIFO (First-In-First-Out) Queue | Overview.


Amazon SQS - Standard Queue vs FIFO (First-In-First-Out) Queue - Overview.

scope:

  • Amazon SQS – Standard Queue Overview (Default Queue),
  • Architecture,
  • Key Features of SQS Standard Queue,
  • How Standard Queues Work,
  • Use Cases of Standard Queues,
  • How SQS is used during Sending & Receiving Messing (Using AWS CLI)
  • Step-by-step guide to create a Standard Queue from the AWS Management Console: UI,
  • Complete Python example using Boto3 to interact with Amazon SQS (Standard Queue),
  • Testing the Standard Queue,
  • Python Code to: Create, Send, Receive, Delete Message,
  • Comparison table of Amazon SQS – Standard Queue & FIFO  (First-In-First-Out) Queue,
  • Use Standard Queue When,
  • Use FIFO Queue When,
  • Sample FIFO Queue Creation with Python (Boto3): CLI

Amazon SQS – Standard Queue Overview (Default Queue)

  • The Standard Queue is the default queue type in Amazon Simple Queue Service (SQS).
  • Standard Queue designed for high throughput, best-effort ordering, and at-least-once delivery.
  • This type of queue is ideal when occasional duplicate messages and out-of-order message processing are acceptable.
  • Amazon SQS  Standard Queue is fully a managed service, that is used to decouple applications
  • Amazon SQS Standard Queue has: 
    • Unlimited throughput
    • Unlimited number of messages that can be sent,  
    • The queue can have unlimited messages too.
Architecture

Key Features of SQS Standard Queue

Feature

Description

 Delivery Model

At-least-once delivery – a message may be delivered more than once(can have duplicate messages).

 Message Ordering

Best-effort ordering – messages may not be received in the exact order they were sent.

 Throughput

Unlimited transactions per second (TPS).

 Visibility Timeout

Temporarily hides messages after a consumer retrieves them.

 Message Size

Up to 256 KB of text data (can be extended via S3 for larger payloads).

 Retention

Messages can be retained from 1 minute to 14 days (default: 4 days).

 Security

Supports encryption (SSE via AWS KMS) and access control via IAM policies.

 Retries & DLQ

Supports retry policies and dead-letter queues (DLQs) for failed messages.

 Long Polling

Reduces empty responses and cost by waiting for messages up to 20 seconds.

 How Standard Queues Work

  1. Producer sends a message to the Standard Queue.
  2. The message is stored redundantly across multiple AWS servers.
  3. A consumer (worker or application) polls the queue and receives messages.
  4. The message is invisible during processing (visibility timeout).
  5. After processing, the consumer deletes the message.
  6. If the message isn't deleted in time, it becomes visible again for reprocessing.

 Use Cases of Standard Queues

  • High-throughput applications
  • Real-time user activity tracking
  • Distributed systems with independent processing
  • Order-insensitive task queues (e.g., image resizing, logging)
  • Decoupling microservices in an event-driven architecture

 How twtech uses SQS  during to Sending and Receiving messages ( AWS CLI)

# bash

# Create a Standard Queue

aws sqs create-queue --queue-name twtech-StandardQueue

# Send a message

aws sqs send-message \

  --queue-url https://sqs.us-east-2.amazonaws.com/accountID/twtech-StandardQueue \

  --message-body "Hello twtech-team, SQS!" 

# Receive a message

aws sqs receive-message \

  --queue-url https://sqs.us-east-2.amazonaws.com/accountID/twtech-StandardQueue

 Step-by-step guide to create a Standard Queue from the AWS Management Console: UI

 1. Sign in to the AWS Console

 2. Open the Amazon SQS Console

  •         From the Services menu, search for SQS and select it.

 3. Create Queue

  •         Click on the “Create queue” button.

 4. Choose Queue Type

  •         Choose Standard Queue (default selection).
    •    Standard High throughput, at-least-once delivery
    •    Leave FIFO Queue unchecked

 5. Configure Queue Name

  •         Enter a Queue name, for example: twtech-StandardQueue.

 6. Configure Optional Settings

twtech can leave most defaults, or customize if needed:

  •         Visibility timeout: How long a message remains invisible after being received (default: 30 sec).
  •         Message retention: How long messages stay in the queue (default: 4 days).
  •         Delivery delay: Delay all messages (optional).
  •         Maximum message size: Default is 256 KB.
  •         Receive message wait time: Set to 20 seconds for long polling (recommended).

 7. Access Policy (Permissions)

  •         Choose one of the options:
    •    Basic (only the queue owner can send/receive)
    •    Advanced (for custom IAM policies)
  •         twtech can allow other AWS accounts or services (like Lambda) to access the queue here.

 8. Encryption (Optional)

  •         Choose SSE (server-side encryption) with AWS KMS if you need to encrypt messages.

 9. Dead-letter Queue (Optional)

  •         twtech can configure a DLQ to handle failed message processing.
  •         Skip or configure later if not needed now.

10. Click “Create Queue”

  •         twtech will be taken to the queue’s dashboard with details, monitoring, and test tools.

 Testing twtech Queue

After creation, twtech can:

  •         Send a test message from the “Send and receive messages” tab.
  •         Receive/delete messages to simulate a consumer.

Here's twtech complete Python example using Boto3 to interact with Amazon SQS (Standard Queue) — including creating a queue, sending a message, receiving it, and deleting it.

 Pre-requisites

  1. Install Boto3 (if not already installed):

# bash

pip install boto3

  1. Configure AWS Credentials:

# bash

aws configure

NB:

twtech must configure its AWS Access Key, Secret Key, Region (e.g., us-east-2), and output format (e.g., json).

 # Python Code to: Create, Send, Receive, Delete Message

# python

import boto3 

# Create an SQS client

sqs = boto3.client('sqs')

# 1. Create a Standard Queue

response = sqs.create_queue(

    QueueName='twtech-StandardQueue',

    Attributes={

        'DelaySeconds': '0',

        'MessageRetentionPeriod': '345600# 4 days in seconds

    }

)

queue_url = response['QueueUrl']

print(f"Queue created: {queue_url}")

# 2. Send a Message to the Queue

send_response = sqs.send_message(

    QueueUrl=queue_url,

    MessageBody='Hello Team from twtech SQS via Boto3',

    MessageAttributes={

        'Sender': {

            'StringValue': 'twtech-PythonApp',

            'DataType': 'String'

        }

    }

)

print(f"Message sent. ID: {send_response['MessageId']}") 

# 3. Receive the Message

receive_response = sqs.receive_message(

    QueueUrl=queue_url,

    MaxNumberOfMessages=1,

    WaitTimeSeconds=5,      # Enable long polling

    MessageAttributeNames=['All']

)

messages = receive_response.get('Messages', [])

if messages:

    message = messages[0]

    receipt_handle = message['ReceiptHandle']

    print("Message received:")

    print(f"  Body: {message['Body']}")

    print(f"  Attributes: {message.get('MessageAttributes', {})}")

    # 4. Delete the Message after processing

    sqs.delete_message(

        QueueUrl=queue_url,

        ReceiptHandle=receipt_handle

    )

    print("Message deleted.")

else:

    print("No messages received.")

NB

  • create_queue() will reuse an existing queue with the same name.
  • MessageRetentionPeriod controls how long a message is kept in the queue (up to 14 days).
  • WaitTimeSeconds in receive_message() enables long polling, reducing empty responses and cost.

 Comparison table of Amazon SQS – Standard Queue & FIFO (First-In-First-Out)  Queue

NB:

  •  This table helps twtech to choose the right Queue based on the application's needs.

 Amazon SQS: Standard Queue vs FIFO (First-In-First-Out) Queue

Feature

Standard Queue

FIFO Queue

 Delivery Guarantee

At-least-once (duplicates possible)

Exactly-once (no duplicates)

 Message Order

Best-effort (unordered delivery)

First-In-First-Out (strict ordering)

 Throughput

High (unlimited TPS)

Limited (up to 300 TPS without batching, 3,000 TPS with batching)

 Duplicates

Possible

Not allowed

 Use Case

High-throughput, unordered tasks (e.g., logging, processing)

Ordered, unique tasks (e.g., transactions, ledgers)

 Message Group ID

Not required

Required (used to maintain ordering)

 Deduplication ID

Not used

Required or auto-generated (ensures no duplicate delivery)

 Queue Name Format

Any name (e.g., MyQueue)

Must end with .fifo (e.g., MyQueue.fifo)

 Supports Encryption, DLQ, IAM

✅ Yes

✅ Yes

 Batching Support

✅ Yes (up to 10 messages)

✅ Yes (up to 10 messages)

 Latency

Typically lower due to less strict guarantees

Slightly higher due to ordering & deduplication checks

 Use Standard Queue When:

  • Message order doesn’t matter.
  • twtech needs high throughput.
  • Duplicate processing is acceptable or handled in twtech app.
  • Examples:
    • Log aggregation
    • Media processing pipelines
    • User notifications

 Use FIFO Queue When:

  • Order matters (e.g., financial transactions, event logs).
  • twtech needs exactly-once delivery.
  • Examples:
    • Banking systems
    • Inventory/order processing
    • Workflow automation

 Sample FIFO Queue Creation with Python (Boto3): CLI

# python

response = sqs.create_queue(

    QueueName='twtech-FIFOQueue.fifo',

    Attributes={

        'FifoQueue': 'true',

        'ContentBasedDeduplication': 'true'

    }

)



No comments:

Post a Comment

Amazon EventBridge | Overview.

Amazon EventBridge - Overview. Scope: Intro, Core Concepts, Key Benefits, Link to official documentation, What EventBridge  Really  Is (Deep...