This is a simple application to perform load tests with the new Spring Cloud AWS SQS integration.
This is not supposed to be an exhaustive testing suite, only to have some throughput estimation.
It currently supports only Standard SQS queues and run results are stored in-memory.
Further improvements include adding support for FIFO queues and persisting messages and results to DynamoDB tables.
Results so far with a single ECS instance show up to:
- 17K messages / second with 4 vcpu and 8 GB memory
- 8K messages / second with 2 vcpu and 4GB memory
- 4K messages / second with 1 vcpu and 2GB memory
Tests were made with up to 1 million messages in a single standard SQS queue.
The test run consists of:
- Create a standard SQS queue
- Send messages to the queue with a small
Stringpayload - Create and start a
SqsMessageListenerContainer - Wait for all messages to be consumed
- Wait for all messages to be acknowledged
- Assert results
- Delete the queue
POST /sqs-load-test/v1/runs
{
"id": "29efe1af-396a-48e0-a5a2-af6897233de3",
"settings" : {
"totalMessages": 1000,
"maxConcurrency": 300,
"timeoutSeconds": 100
}
}GET /sqs-load-test/v1/runs
GET /sqs-load-test/v1/runs/{id}
DELETE /sqs-load-test/v1/runs/
DELETE /sqs-load-test/v1/runs/{id}
This application contains a simple Terraform infrastructure to be deployed to AWS ECS, along with a Github Actions CI/CD pipeline.
Open API documentation that can be accessed at /sqs-load-test/swagger-ui/index.html