A reusable .NET library for seamless integration with AWS SQS, enabling both message production and consumption. Supports single and batch processing for efficient message handling. Ideal for building scalable, robust services that interact with SQS queues, with support for both FIFO and standard queues.
$ dotnet add package SQSXThis library provides an easy and efficient way to produce and consume messages from AWS SQS using C#. It supports both Standard and FIFO queues, allows batch publishing and batch consuming, and enables seamless consumer integration using method decorators.
AWSSDK.SQS (Amazon SQS SDK for .NET)Microsoft.Extensions.Hosting (Background service support)Microsoft.Extensions.DependencyInjection (DI for consumer handling)dotnet add package SQSX --version 1.0.0
Program.csvar builder = Host.CreateDefaultBuilder(args);
builder.ConfigureServices((hostContext, services) =>
{
services.AddAWSService<IAmazonSQS>();
services.AddSingleton<ISQSProducer, SQSProducer>();
services.AddHostedService<SQSConsumerService>();
});
var app = builder.Build();
await app.RunAsync();
public class OrderService
{
private readonly ISQSProducer _sqsProducer;
public OrderService(ISQSProducer sqsProducer)
{
_sqsProducer = sqsProducer;
}
public async Task PublishOrderAsync()
{
await _sqsProducer.PublishMessageAsync("https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue", new { OrderId = 123, Status = "Created" });
}
}
public class OrderProcessor
{
[SQSConsumer("https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue", 5)]
public async Task<bool> ProcessOrderAsync(Message message)
{
Console.WriteLine($"Received: {message.Body}");
return true;
}
}
✅ Effortless Consumer Registration using decorators. ✅ Optimized for Performance with batch processing. ✅ Extensible & Scalable due to SOLID principles. ✅ Reduces Boilerplate Code for SQS integration.
Pull requests are welcome! Ensure your changes adhere to best practices and include tests.
MIT License