sqs_extended_client
A Ruby gem that provides support for sending and receiving large messages using Amazon SQS by offloading payloads to Amazon S3, similar to the AWS Java SDK's SQS Extended Client Library.
✨ Features
- ✅ Automatically offloads large messages to S3
- ✅ Configurable max message size threshold
- ✅ Optional compression support
- ✅ Automatic S3 payload cleanup after reading (configurable)
- ✅ JSON schema validation (planned)
- ✅ Error handling for missing or inaccessible buckets
- ✅ Ready for use as a drop-in extension of
Aws::SQS::Client
🔧 Installation
gem install sqs_extended_client
gem 'sqs_extended_client', path: 'path/to/your/local/gem'
Example:
require 'aws-sdk-sqs'
require 'aws-sdk-s3'
require 'sqs_extended_client'
sqs = Aws::SQS::Client.new(region: 'us-east-1')
s3 = Aws::S3::Client.new(region: 'us-east-1')
client = SqsExtendedClient::Client.new(
sqs: sqs,
s3: s3,
queue_url: 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue',
bucket_name: 'my-sqs-large-message-bucket',
always_use_s3: false,
delete_s3_payload_after_read: true,
compress: true
)
client.send_message("Hello world!")
messages = client.receive_messages