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

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

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

Для начала работы с 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 см. Руководство для разработчиков.

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

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

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

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

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

Бесплатное начало работы
blank