Можно ли использовать Amazon SQS в качестве очереди ожидания перед отправкой в ​​SNS?

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

  • Новое сообщение отправляется в моем приложении между пользователями.
  • Сообщение об уведомлении пользователя по электронной почте отбрасывается в очередь с задержкой в ​​60 секунд. Эта задержка позволяет время для клиента чата реального времени (faye/angularjs) видеть сообщение и отмечать его как просмотренное.
  • После задержки сообщение подхвачено, проверяется статус "читать" и, если клиент не был прочитан клиентом, отправляется электронное письмо.

Первоначально я собирался использовать cronjob на каждом сервере сервера опроса в очереди сообщений, однако мне кажется, что было бы более эффективно использовать SNS для вызова какой-либо конечной точки отправки электронной почты (возможно, в Lambda).

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

Спасибо

1 ответ

К сожалению, это еще не доступно из коробки. Недостающая часть - это генерация уведомлений о появлении/видимости сообщений Amazon SNS по Amazon SQS, будь то через push (аналогично уведомления Amazon S3 или через опрос, подобный подписки Amazon Kinesis (см. Модели Pull/Push Event для получения дополнительной информации о различии), что позволило бы напрямую подключить функцию AWS Lambda к SQS delay queue, см. например:

При этом вы можете обойти эти ограничения несколькими способами, например:

Команда AWS Lambda предоставила множество/наиболее похожих запросов по функциям в течение последних месяцев, так что я ожидаю, что они будут предлагать как обработку событий SQS, так и запланированные функции Lambda в течение года.

licensed under cc by-sa 3.0 with attribution.