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

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

Все сервисы 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

а) Если появится целевая страница консоли SNS, нажмите Next step (Следующий шаг).

1a-sns-console-home

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

1a-sns-console-home

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


а)  На странице Create topic (Создание темы) введите New‑Orders в поле с именем темы, затем нажмите Create topic (Создать тему).

2a-topic-create-wf

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

2a-topic-create-wf

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

2b-topic-create-confirm

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

2b-topic-create-confirm

После создания темы Amazon SNS можно создать очереди Amazon SQS, которые будут подписаны на эту тему.

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

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

Для упрощения в этом руководстве подключение инстансов EC2 к очередям рассматриваться не будет.


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

 

tmt_send-fanout-event-notifications_3a

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

tmt_send-fanout-event-notifications_3a

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

На странице 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

в) Только что созданная очередь будет выделена в списке очередей. Теперь необходимо создать вторую очередь для анализа заказов.

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

tmt_send-fanout-event-notifications_3c

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

tmt_send-fanout-event-notifications_3c

г) Введите Orders‑for‑Analytics в поле Queue Name (Имя очереди) и нажмите Quick‑Create Queue (Быстрое создание очереди)

tmt_send-fanout-event-notifications_3d

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

tmt_send-fanout-event-notifications_3d

Д. Только что созданная очередь появится в списке очередей.

tmt_send-fanout-event-notifications_3e

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

tmt_send-fanout-event-notifications_3e

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


а) Из списка очередей выберите очереди с названиями 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

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

Тема SNS отображается в списке, потому что была создана в том же аккаунте, что и очереди Amazon SQS. Если бы тема SNS была создана в другом аккаунте, вам пришлось бы использовать для подписки поле Topic ARN (ARN темы). Дополнительные сведения см. в документации Amazon SNS.

Не меняя параметра Topic Region, щелкните Subscribe.  

tmt_send-fanout-event-notifications_4b

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

tmt_send-fanout-event-notifications_4b

в) Появится диалоговое окно Topic Subscription Result. Нажмите OK.

tmt_send-fanout-event-notifications_4c

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

tmt_send-fanout-event-notifications_4c

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


а) В консоли Amazon SNS на странице сведений о теме New Orders нажмите Publish message (Опубликовать сообщение).

 

5a-topic-create-confirm

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

5a-topic-create-confirm

б) Отобразится страница Publish Message to topic (Опубликовать сообщение в теме). В поле Subject (Тема) введите «Order 123‑4567890‑1234567». В поле Message (Сообщение) введите следующий текст, который имитирует пример заказа:

1 x Widget @ $29.99 USD

2 x Widget Cables @ $4.99

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

 

5b-sns-send-message-wf

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

5b-sns-send-message-wf

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

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


а) В консоли Amazon SQS выберите поле с очередью Orders‑for‑Inventory из списка очередей. В раскрывающемся списке Queue Actions (Действие с очередью) выберите пункт View / Delete Messages (Просмотр / удаление сообщений).

 

tmt_send-fanout-event-notifications_6a

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

tmt_send-fanout-event-notifications_6a

б) Щелкните 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

г) В столбце Body нажмите More Details (Подробнее). В поле Message Details (Подробнее) содержится документ в формате JSON. Этот документ включает в себя тему и текст сообщения, опубликованного в теме.  

Вы подтвердили, что очередь Orders‑for‑Inventory получила оповещение о новом заказе из темы New‑Orders.  

Щелкните Close.

 

tmt_send-fanout-event-notifications_6d

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

tmt_send-fanout-event-notifications_6d

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

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

 

tmt_send-fanout-event-notifications_6e

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

tmt_send-fanout-event-notifications_6e

е. Повторите действия с 6 а) по 6 д), чтобы убедиться, что очередь Orders‑for‑Analytics также получила оповещения о новом заказе.

tmt_send-fanout-event-notifications_6f

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

tmt_send-fanout-event-notifications_6f

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


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

Выберите тему New‑Orders.

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

 

7a

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

7a

б) Отобразится диалоговое окно с подтверждением удаления. В диалоговом окне введите delete me и выберите Delete (Удалить). Тема и связанные с ней подписки удалены. Теперь можно закрыть окно браузера SNS (но не выходите из аккаунта, если вам еще нужно удалить очереди в консоли SNS).

7b

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

7b

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


tmt_send-fanout-event-notifications_7c

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

tmt_send-fanout-event-notifications_7c

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

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

tmt_send-fanout-event-notifications_7d

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

tmt_send-fanout-event-notifications_7d

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

 


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

Подробнее

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

Больше информации

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

Решение в действии

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

Да
Нет