1 unstable release

Uses new Rust 2024

0.1.0 Sep 8, 2025

#607 in Testing

MIT license

435KB
4.5K SLoC

Rust 4K SLoC // 0.1% comments Shell 793 SLoC // 0.1% comments

QLite

A lightweight, SQS-compatible message queue backed by SQLite, written in Rust. The Primary purpose of this tool is to easily facilitate local or cicd based testing this project is not meant for production workloads and it is not recommended to use it for them.

Features

  • SQS-Compatible API: Drop-in replacement for Amazon SQS with standard operations
  • SQLite Backend: Persistent message storage with no external dependencies
  • Web UI: Optional dashboard for queue monitoring and message browsing
  • CLI Interface: Command-line tools for queue management

Web UI

QLite Dashboard

Quick Start

Installation

cargo build --release

Start Server

# Basic server on port 3000
./qlite server --port 3000

# With web UI enabled
./qlite server --port 3000 --enable-ui

CLI Usage

# Create a queue
./qlite create-queue my-queue

# Send a message
./qlite send my-queue "Hello, World!"

# Receive messages
./qlite receive my-queue

# Delete a message
./qlite delete my-queue <receipt-handle>

Quick Start with AWS CLI

# Set dummy credentials (any values work)
export AWS_ACCESS_KEY_ID=dummy
export AWS_SECRET_ACCESS_KEY=dummy

# Start QLite server
cargo run -- server --port 3000

# Use AWS CLI exactly like with real SQS
aws sqs create-queue --endpoint-url http://localhost:3000 --queue-name test-queue
aws sqs list-queues --endpoint-url http://localhost:3000
aws sqs send-message --endpoint-url http://localhost:3000 --queue-url http://localhost:3000/test-queue --message-body "Hello World"
aws sqs receive-message --endpoint-url http://localhost:3000 --queue-url http://localhost:3000/test-queue

SDK Integration Example

# Python boto3 example
import boto3

sqs = boto3.client(
    'sqs',
    endpoint_url='http://localhost:3000',
    aws_access_key_id='dummy',
    aws_secret_access_key='dummy',
    region_name='us-east-1'
)

# Works exactly like AWS SQS
queue = sqs.create_queue(QueueName='my-test-queue')
sqs.send_message(QueueUrl=queue['QueueUrl'], MessageBody='Hello from Python!')

SQS Feature Compatibility Matrix

This matrix shows which AWS SQS features are supported by QLite, available in AWS SQS, and covered by our test suite.

Feature QLite Support AWS SQS Tested
Core Queue Operations
CreateQueue
ListQueues
GetQueueUrl
DeleteQueue
GetQueueAttributes
SetQueueAttributes
Message Operations
SendMessage
ReceiveMessage
DeleteMessage
SendMessageBatch
DeleteMessageBatch
Message Attributes
MessageAttributes
MessageSystemAttributes
Queue Types
Standard Queues
FIFO Queues (.fifo)
Queue Attributes
VisibilityTimeout
MessageRetentionPeriod
DelaySeconds
MaxReceiveCount
RedrivePolicy (DLQ)
FIFO-Specific Features
MessageGroupId
MessageDeduplicationId
ContentBasedDeduplication
FifoThroughputLimit
DeduplicationScope
Advanced Features
Long Polling (WaitTimeSeconds)
Short Polling
Message Timers (DelaySeconds)
Dead Letter Queues
Security & Access
IAM Integration
SQS Access Policy
Server-Side Encryption
Monitoring & Management
CloudWatch Metrics
Message Tracing
Tags
Format Support
XML Responses
JSON Responses (SDK)
Form-encoded Requests

Legend

  • Fully Supported/Available - Feature works as expected
  • Not Supported - Feature not implemented or not applicable

Test Coverage

QLite includes comprehensive test scripts in the scripts/ directory:

  • comprehensive_aws_cli_test.sh - Full feature testing
  • production_readiness_test.sh - Core functionality validation
  • detailed_aws_cli_test.sh - Detailed output testing
  • test_sqs_compatible.sh - Format compatibility testing
  • test_fixes.sh - Validates all bug fixes and improvements
  • test_max_receive_count.sh - MaxReceiveCount and Dead Letter Queue testing

Run tests with: ./scripts/production_readiness_test.sh or ./scripts/test_fixes.sh

Dependencies

~43MB
~796K SLoC