Одна из современных рекомендаций по разработке ПО – создание архитектуры, в которой каждый отдельный компонент решения выполняет свою конкретную задачу. Такой подход позволяет повысить масштабируемость и надежность итоговой системы. С помощью очередей сообщений можно отправлять, хранить и получать сообщения компонентов приложений в любом масштабе без потери сообщений и необходимости обеспечивать постоянную доступность других сервисов.

Очереди сообщений предлагают несколько вариантов, которые позволяют указать, каким образом будет обеспечиваться доставка сообщений и защита. Подробнее об этом ниже. Очереди сообщений можно сочетать с моделью отправки сообщений «издатель-подписчик» в шаблоне проектирования разветвлений.

Что такое очередь сообщений?

Для начала работы с Amazon Simple Queue Service (SQS) нужны всего три простых команды.

Попробовать Amazon SQS бесплатно

Уровень бесплатного пользования AWS включает 1 млн запросов к Amazon Simple Queue Service (SQS).

Подробнее об уровне бесплатного пользования AWS »


Большинство очередей сообщений предоставляют возможность получения сообщений как методом push, так и методом pull. Метод pull подразумевает постоянный опрос очереди на наличие новых сообщений. Метод push подразумевает отправку уведомления пользователю в момент доступности сообщения (он также называется моделью отправки сообщений «издатель-подписчик»). Также можно использовать длительный опрос, чтобы разрешить запросам pull ожидать доставки новых сообщений в течение указанного времени перед завершением.

Многие очереди сообщений поддерживают настройку определенного времени доставки для сообщений. Если для всех сообщений нужно использовать одинаковую задержку, то можно создать очередь задержанной доставки.

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

Если отправка дубликатов не допускается, очереди сообщений, работающие по алгоритму FIFO («первым получено – первым отправлено»), будут следить за тем, чтобы каждое сообщение доставлялось один раз (и только один раз) путем автоматической фильтрации дубликатов.

В этих очередях самые старые (или первые) записи, иногда называемые «головой» очереди, обрабатываются первыми. Подробнее об очередях FIFO Amazon SQS см. в Руководстве для разработчиков.

Также вы можете прочитать публикации в наших блогах: Using Python and Amazon SQS FIFO Queues to Preserve Message Sequencing, How the Amazon SQS FIFO API Works и FIFO Queues with Exactly-Once Processing & Deduplication.

Очередь необрабатываемых сообщений – это очередь, куда другие очереди могут отправлять сообщения, которые не удалось обработать. Они отделены от остальных, что упрощает дальнейшую проверку без блокировки обработки очереди или траты циклов ЦПУ на сообщения, которые могли бы никогда не быть отправлены.

Подробнее об очередях необрабатываемых сообщений читайте в публикации в блоге: Using Amazon SQS Dead-Letter Queues to Control Message Failure. Чтобы узнать, как использовать очереди необрабатываемых сообщений в Amazon SQS, см. наше Руководство разработчика.

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

Ядовитые пилюли – это особые сообщения, которые могут быть получены, но не обработаны. Этот механизм используется для передачи приемнику сигнала о необходимости завершения работы, чтобы он больше не ждал ввода. Этот способ подобен закрытию сокета в модели «клиент-сервер».

Очереди сообщений выполняют аутентификацию приложений, которые пытаются получить доступ к очереди, и позволяют использовать шифрование для шифрования сообщений при передаче по сети, а также при хранении в самой очереди. Подробнее о безопасности очередей в AWS см. в публикации нашего блога Server-Side Encryption for Amazon Simple Queue Service (SQS). Подробнее о возможностях обеспечения безопасности в Amazon SQS см. в нашем Руководстве для разработчиков.

Начните бесплатно с помощью всего лишь трех простых команд.