Перейти к основному содержимому
Нормативная версия документации - английская

Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.

Очереди

Очередь SQS хранит каждое сообщение, пока потребитель его не удалит, а потребители, которые её опрашивают, конкурируют: каждое сообщение достаётся одному из них.

Отправители пишут в одну очередь, два потребителя её опрашивают, и каждое сообщение достаётся одному из нихОчередь ordersОтправители12345Стандартная: хотя бы один раз, порядок не гарантированFIFO: по порядку внутри группы сообщенийПотребитель 1ReceiveMessage:до 10, ждёт до 20 сПотребитель 2ReceiveMessage:до 10, ждёт до 20 сКаждое сообщение достаётся одному потребителю. Оно хранитсядо удаления или до конца срока: 4 дня по умолчанию, до 14
Схема текстом
  1. Очередь orders: 1; 2; 3; 4; 5; Стандартная: хотя бы один раз, порядок не гарантирован FIFO: по порядку внутри группы сообщений
  2. Отправители → Очередь orders: SendMessage
  3. Очередь orders → Потребитель 1 ReceiveMessage: до 10, ждёт до 20 с: получение
  4. Очередь orders → Потребитель 2 ReceiveMessage: до 10, ждёт до 20 с: получение
  5. Каждое сообщение достаётся одному потребителю. Оно хранится до удаления или до конца срока: 4 дня по умолчанию, до 14

Отправитель отправляет одно сообщение за один вызов SendMessage. Очередь хранит его, пока потребитель его не удалит или не закончится срок хранения: четыре дня по умолчанию и не больше четырнадцати. Сообщение - это текстовое тело размером до 1 МиБ и до десяти атрибутов сообщения.

Потребитель запрашивает сообщения вызовом ReceiveMessage. Один вызов возвращает не больше десяти. При длинном опросе вызов ждёт до 20 секунд и отвечает, как только в очереди появится сообщение. Полученное сообщение не удаляется: оно остаётся в очереди, скрытое от других потребителей, как показывает страница Видимость. Поэтому потребители, которые опрашивают одну очередь, делят её сообщения между собой.

Стандартная очередь доставляет каждое сообщение хотя бы один раз, иногда дважды, и сохраняет порядок только по возможности. Очередь FIFO, имя которой оканчивается на .fifo, доставляет сообщения одной группы сообщений по порядку, как показывает страница Группы.

SQS берёт плату за запросы, а не за сообщения. Этот крейт всегда запрашивает десять сообщений за одно получение, даже для подписки, которая обрабатывает сообщения по одному, и передаёт пакет дальше по одному сообщению.

Эта модель взята у самого Amazon SQS (базовая архитектура, длинный опрос, квоты на сообщения).