在发送给SNS之前,我可以使用Amazon SQS作为延迟队列吗?

Jim*_*izz 7 message-queue amazon-sqs amazon-web-services amazon-sns

我的系统在Amazon自动缩放组上运行,一个功能允许用户进行用户消息传递,我有以下用例要解决.

  1. 用户之间在我的应用程序中发送新消息.
  2. 通过电子邮件通知用户的消息将被丢弃到延迟60秒的队列中.此延迟允许实时聊天客户端(faye/angularjs)有时间查看消息并将其标记为已查看.
  3. 在延迟之后,拾取消息,检查"读取"状态,如果客户端尚未读取,则发送电子邮件.

最初我打算在每个应用程序服务器上使用cronjob轮询消息队列,但是对我来说,使用SNS调用某种电子邮件发送端点(可能在Lambda中)会更有效.

我看不出有任何方法可以进行SNS调查SQS,但有人可以建议如何做到这一点吗?基本上我希望SNS有延迟,这样我就不会在电子邮件警报的"实时"聊天中向某人发送垃圾邮件.

谢谢

Ste*_*pel 5

不幸的是,这还没有开箱即用.缺少的部分是通过Amazon SQS队列生成有关消息到达/可见性的Amazon SNS通知,无论是通过推送(类似于Amazon S3通知,还是通过类似于Amazon Kinesis订阅的民意调查)(请参阅推/拉事件模型了解更多信息) (差异),这将允许将AWS Lambda函数直接连接到resp.SQS延迟队列事件,请参阅例如:

话虽这么说,您可以通过几种方式解决这些限制,例如:

  • 按计划触发Lambda函数(例如每分钟一次),并从那里轮询您的SQS延迟队列

AWS Lambda团队在最近一个月内提供了许多/大多数类似的功能请求,所以我希望他们在一年中提供SQS事件处理和预定的Lambda功能.