В этом учебном пособии рассматривается сценарий распределенной отправки сообщений с использованием Amazon Simple Notification Service (SNS) и Amazon Simple Queue Service (SQS). В описанном сценарии сообщения отправляются нескольким подписчикам, что устраняет необходимость периодической проверки или опроса на наличие обновлений и обеспечивает параллельную асинхронную обработку сообщения подписчиками.

Чтобы проиллюстрировать вышесказанное, предположим, что вы разрабатываете приложение с оптимизацией для облака, отправляющее сообщение SNS Amazon о теме при каждом размещении заказа в интернет-магазине. Все очереди SQS Amazon, которые подписаны на эту тему, получат идентичные уведомления для нового заказа.

Сервисы AWS, используемые в этом учебном пособии, относятся к уровню бесплатного пользования AWS.

Для распределенной отправки оповещений о событиях на AWS требуется аккаунт

Создать бесплатный аккаунт

Уровень бесплатного пользования AWS включает 1 000 000 публикаций для Amazon Simple Notification Service и 1 000 000 запросов Amazon Simple Queue Service.

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

 

Щелкните здесь, и в новом окне браузера откроется Консоль управления AWS. При этом руководство останется открытым. Когда стартовый экран загрузится, введите имя пользователя и пароль, чтобы начать работу. Затем введите notification в поле поиска и выберите «Simple Notification Service» для открытия сервисной консоли.

tmt_send-fanout-event-notifications_1a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_1a

a. Если появится целевая страница консоли SNS, нажмите «Get Started Now» (Начать сейчас).

tmt_send-fanout-event-notifications_1b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_1b

На этом шаге вы создадите тему SNS Amazon. Тема – это коммуникационный канал для отправки сообщений и подписки на уведомления. В данном примере в качестве образца используется приложение электронной коммерции, которое будет передавать сообщение в тему SNS Amazon при каждом размещении нового заказа в интернет-магазине. 


a. В разделе «Common Actions» (Общие действия) нажмите «Create topic» (Создать тему).

tmt_send-fanout-event-notifications_2a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_2a

b. Появится диалоговое окно «Create topic» (Создание темы). В поле «Topic name» (Имя темы) введите New-Orders, а затем нажмите «Create topic» (Создать тему).

tmt_send-fanout-event-notifications_2b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_2b

c. Откроется страница «Topic Details» (Сведения о теме).

tmt_send-fanout-event-notifications_2c

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_2c

Теперь, после создания темы с помощью SNS Amazon, вы создадите очереди SQS Amazon, которые подпишутся на тему.

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

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

Чтобы не усложнять задачу, мы не будем на самом деле прикреплять инстансы EC2 к очередям при изучении данного пособия.


a. Щелкните здесь, чтобы открыть консоль SQS Amazon в новом окне браузера. Если появится целевая страница SQS, нажмите «Get Started Now» (Начать сейчас). В противном случае перейдите к следующему шагу.

 

tmt_send-fanout-event-notifications_3a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_3a

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

На странице «Create New Queue» (Создание очереди) введите Orders-for-Inventory в поле «Queue Name» (Имя очереди). Оставьте выбранным элемент «Standard Queue» (Стандартная очередь) и нажмите «Quick-Create Queue» (Быстро создаваемая очередь).

tmt_send-fanout-event-notifications_3b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_3b

c. Ваша новая очередь создана и выбрана в списке очередей. Далее вы создадите вторую очередь для работы с аналитикой заказов.

Нажмите «Create New Queue» (Создать очередь), чтобы создать другую очередь для хранения заказов для сервиса Analytics Service.

tmt_send-fanout-event-notifications_3c

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_3c

d. Введите Orders-for-Analytics в поле «Queue Name» (Имя очереди) и нажмите «Quick-Create Queue» (Быстро создаваемая очередь).

tmt_send-fanout-event-notifications_3d

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_3d

e. После этого в списке очередей появится новая очередь.

tmt_send-fanout-event-notifications_3e

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_3e

Теперь, когда вы создали две очереди SQS Amazon, вам нужно подписать их на тему SNS Amazon, которая рассылает уведомления о новых заказах.


a. Выберите из списка очередей «Orders-for-Inventory» и «Orders-for-Analytics». Из списка «Queue Actions» (Действия с очередями) выберите «Subscribe Queues to SNS Topic» (Подписать очереди на тему SNS).

tmt_send-fanout-event-notifications_4a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_4a

b. Откроется диалоговое окно «Subscribe to a Topic» (Подписка на тему). Выберите из раскрывающегося списка «Choose a Topic» (Выбор темы) свою тему SNS Amazon «New-Orders».

Ваша тема SNS появится в списке, потому что вы создали ее из того же аккаунта, который использовали для создания своих очередей SQS Amazon. Если тема SNS была создана другим аккаунтом, вы можете подписаться на нее с помощью Topic ARN. Дополнительную информацию см. в документации к SNS Amazon.

Оставьте поле «Topic Region» (Регион темы) без изменений и нажмите «Subscribe» (Подписаться).

tmt_send-fanout-event-notifications_4b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_4b

c. Откроется диалоговое окно «Topic Subscription Result» (Результаты подписки на тему). Нажмите OK.

tmt_send-fanout-event-notifications_4c

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_4c

Теперь ваши очереди подписаны на тему. При выполнении данного шага вы будете моделировать новый заказ. Для этого вымышленное приложение электронной коммерции отправит в тему сообщение со сведениями о заказе.


a. На консоли SNS Amazon нажмите «Topics» (Темы).

 

tmt_send-fanout-event-notifications_5a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_5a

b. Выберите тему «New-Orders», затем нажмите кнопку «Publish to topic» (Опубликовать в теме).


tmt_send-fanout-event-notifications_5b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_5b

c. Откроется страница «Publish a Message» (Публикация сообщения).

В поле «Subject» (Тема) введите Order 123-4567890-1234567.

В поле «Message format» (Формат сообщения) выберите «Raw» (Сырой).

В поле «Message» (Сообщение) введите следующий текст, представляющий собой пример заказа:
1 x Widget @ $29.99 USD
2 x Widget Cables @ $4.99

Нажмите «Publish Message» (Опубликовать сообщение). Появится диалоговое окно для подтверждения.

tmt_send-fanout-event-notifications_5c

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_5c

Когда новое сообщение будет опубликовано, SNS Amazon доставит его в каждую конечную точку, которая подписана на тему. В таком сценарии распределенной отправки оповещений, как этот, очереди SQS Amazon представляют собой конечные точки.

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


a. На консоли SQS Amazon установите флажок для очереди «Orders-for-Inventory» из списка очередей. Из раскрывающегося списка «Queue Action» (Действия с очередями) выберите «View/Delete Messages» (Просмотр / удаление сообщений).

 

tmt_send-fanout-event-notifications_6a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_6a

b. Нажмите «Start Polling for Messages» (Начать опрос о сообщениях).


tmt_send-fanout-event-notifications_6b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_6b

c. Откроется диалоговое окно «View/Delete Messages in Orders-for-Inventory» (Просмотр / удаление сообщений в Orders-for-Inventory).

tmt_send-fanout-event-notifications_6c

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_6c

d. В столбце «Body» (Текст) нажмите «More Details» (Подробнее). Поле «Message Details» (Сведения о сообщении) содержит документ JSON с заголовком и текстом сообщения, которое вы опубликовали в теме.

Вы убедились, что очередь «Orders-for-Inventory» получила уведомление о новом заказе от темы «New-Orders».

Нажмите кнопку «Close» (Закрыть).

 

tmt_send-fanout-event-notifications_6d

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_6d

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

Нажмите «Delete 1 Message» (Удалить 1 сообщение). Для подтверждения нажмите «Yes, Delete Checked Messages» (Да, удалить отмеченные сообщения). Затем нажмите «Close» (Закрыть).

 

tmt_send-fanout-event-notifications_6e

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_6e

f. Повторите шаги с 6a по 6e, чтобы убедиться, что очередь «Orders-for-Analytics» тоже получила уведомление о новом заказе.

tmt_send-fanout-event-notifications_6f

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_6f

При выполнении этого шага вы удалите ресурсы, которые создали для данного учебного пособия, в том числе темы, очереди и подписки на темы. Рекомендуется всегда удалять ресурсы, которые вы больше не будете использовать, чтобы с вас не взималась плата.


a. Откройте консоль SNS Amazon и нажмите «Topics» (Темы) на панели навигации слева.

Выберите тему «New-Orders».

Щелкните раскрывающийся список «Actions» (Действия) и выберите «Delete topics» (Удаление тем).


tmt_send-fanout-event-notifications_7a

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_7a

b. Появится диалоговое окно с подтверждением «Delete» (Удаление). Нажмите «Delete» (Удалить). Будут удалены тема и ее подписки. Теперь можно закрыть окно браузера SNS (но не выходите из системы, поскольку вам еще нужно удалить очереди в консоли SQS).

 

tmt_send-fanout-event-notifications_7b

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_7b

c. Выберите в консоли SQS Amazon очереди «Orders-for-Inventory» и «Orders-for-Analytics». В «Queue Actions» (Действия с очередями) выберите «Delete Queues» (Удаление очередей).


tmt_send-fanout-event-notifications_7c

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_7c

d. Откроется диалоговое окно «Delete Queues» (Удаление очередей). Нажмите «Yes, Delete 2 Queues» (Да, удалить 2 очереди). Очереди будут удалены.

Теперь можно выйти из консоли SQS Amazon.

tmt_send-fanout-event-notifications_7d

(Нажмите, чтобы увеличить.)

tmt_send-fanout-event-notifications_7d

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

 


Теперь, когда вы научились использовать распределенную отправку оповещений с помощью Amazon Simple Notification Service и Amazon Simple Queue Service, выберите один из следующих параметров, чтобы больше узнать об облачной рассылке сообщений на AWS.

Подробнее

Ознакомьтесь с возможностями, компонентами и вариантами использования тем сообщений на Amazon Web Services (AWS). Посетите веб-страницу Amazon SNS »

Копните глубже

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

Посмотрите в действии

Узнайте, как наши клиенты, например компания Capital One, используют Amazon SQS и Amazon SNS для разъединения и масштабирования приложений. Смотрите наш вебинар »

Да
Нет