AWS SQS
SQS (Simple Queue Service) — managed очередь Amazon (2006). Первый AWS-сервис. Не брокер, а HTTP API: SendMessage, ReceiveMessage, DeleteMessage. Без сервера, без масштабирования — Amazon делает.
API
POST https://sqs.eu-west-1.amazonaws.com/ HTTP/1.1
Action=SendMessage
&QueueUrl=https://sqs.eu-west-1.amazonaws.com/123456789/myqueue
&MessageBody=hello
&AWSSignature=...
# receive
Action=ReceiveMessage&MaxNumberOfMessages=10&WaitTimeSeconds=20
# delete
Action=DeleteMessage&ReceiptHandle=abc123...
Standard vs FIFO
| Standard | FIFO | |
|---|---|---|
| Порядок | best-effort | строгий (внутри MessageGroupId) |
| Дубли | возможны | deduplication по content/id |
| Throughput | unlimited | 3000 msg/s per API |
| Стоимость | дешевле | дороже |
| Имя | myqueue | myqueue.fifo (обязательный суффикс) |
Visibility timeout
Consumer получает сообщение → оно скрыто из очереди на N секунд (по умолчанию 30). Если consumer его не удалил за это время — сообщение снова видно, другой consumer возьмёт. Так реализуется at-least-once.
Long polling
ReceiveMessage WaitTimeSeconds=20
# API держит запрос до 20 сек пока не появится сообщение
# → мгновенная доставка, меньше запросов
Dead letter queue (DLQ)
После N неудачных receive (не удалено = failed) → сообщение уходит в DLQ. Для отладки и повторной обработки.
Delay queue / Message delay
Сообщение недоступно N секунд после SendMessage (max 15 мин). Task-scheduler pattern.
Limits
- Тело: 256 КБ (или до 2 ГБ через SQS Extended с S3)
- Retention: до 14 дней
- Delay: до 15 мин
- Visibility timeout: до 12 часов
- Long poll: до 20 сек
Интеграции
- Lambda — трижды polling, автомасштаб
- SNS → SQS fanout — one publish, N очередей
- EventBridge → SQS — маршрут по правилам
- S3 events → SQS — на upload/delete
SQS vs Kafka / RabbitMQ
- SQS: managed, HTTP, pay-per-request, простая семантика
- Kafka: self-hosted, high throughput, log replay
- RabbitMQ: гибкий routing, low latency
Порты и стоимость
- HTTPS 443, стандартный AWS SigV4
- ~$0.40 за миллион запросов (standard), ~$0.50 (FIFO)
- Первый миллион в месяц — бесплатно