Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Очереди
Очередь SQS хранит каждое сообщение, пока потребитель его не удалит, а потребители, которые её опрашивают, конкурируют: каждое сообщение достаётся одному из них.
Схема текстом
- Очередь orders: 1; 2; 3; 4; 5; Стандартная: хотя бы один раз, порядок не гарантирован FIFO: по порядку внутри группы сообщений
- Отправители → Очередь orders: SendMessage
- Очередь orders → Потребитель 1 ReceiveMessage: до 10, ждёт до 20 с: получение
- Очередь orders → Потребитель 2 ReceiveMessage: до 10, ждёт до 20 с: получение
- Каждое сообщение достаётся одному потребителю. Оно хранится до удаления или до конца срока: 4 дня по умолчанию, до 14
Отправитель отправляет одно сообщение за один вызов SendMessage. Очередь хранит его, пока
потребитель его не удалит или не закончится срок хранения: четыре дня по умолчанию и не больше
четырнадцати. Сообщение - это текстовое тело размером до 1 МиБ и до десяти атрибутов сообщения.
Потребитель запрашивает сообщения вызовом ReceiveMessage. Один вызов возвращает не больше
десяти. При длинном опросе вызов ждёт до 20 секунд и отвечает, как только в очереди появится
сообщение. Полученное сообщение не удаляется: оно остаётся в очереди, скрытое от других
потребителей, как показывает страница Видимость. Поэтому потребители, которые
опрашивают одну очередь, делят её сообщения между собой.
Стандартная очередь доставляет каждое сообщение хотя бы один раз, иногда дважды, и сохраняет
порядок только по возможности. Очередь FIFO, имя которой оканчивается на .fifo, доставляет
сообщения одной группы сообщений по порядку, как показывает страница Группы.
SQS берёт плату за запросы, а не за сообщения. Этот крейт всегда запрашивает десять сообщений за одно получение, даже для подписки, которая обрабатывает сообщения по одному, и передаёт пакет дальше по одному сообщению.
Эта модель взята у самого Amazon SQS (базовая архитектура, длинный опрос, квоты на сообщения).