【发布时间】:2017-05-28 15:19:27
【问题描述】:
我有一个用例,我需要 Amazon SNS 发送通知,直到我的应用程序(我们称之为 APP)成功接收到它,但文档说消息的最长生命周期可以是 1 小时。
假设 APP 崩溃并且无法在 1 小时内使其上线。我仍然需要以某种方式接收这些消息。
有多种实现方式:
- 来自 SQS 的 APP 轮询。我不喜欢这个选项,因为它在 APP 和 AWS 之间产生了太多的网络流量。
- SNS 向以下两者发送通知:APP 和 SQS。如果 APP 能够接收到该消息,它将立即将其从 SQS 中删除。如果 APP 无法接收消息(崩溃),它可以在启动时从 SQS 加载消息并清理队列。
- AWS Lambda 代码作为消息传递服务。如果 Lambda 代码失败,它可以将消息推送到 SQS 死信队列,否则保持队列干净。处理 Lamba 代码更新开销太大,如果可能的话,用纯 AWS 解决这个问题会很酷。
完美的解决方案是为 SNS 消息设置无限超时,但亚马逊似乎不支持。
您认为解决此问题的最佳解决方案是什么?我错过了什么吗?
【问题讨论】:
-
如果您希望依赖非 AWS 解决方案,您可以使用带有消息历史记录(保留)插件的 pubnub。
-
感谢 hjpotter92。由于它是高度安全的解决方案,我不希望将任何数据发送给亚马逊以外的第三方。
-
这有什么更新吗?
标签: amazon-web-services aws-lambda amazon-sqs amazon-sns