我有一个用例,我需要Amazon SNS发送通知,直到我的应用程序(让我们称之为APP)成功收到它,但文档说消息的最长生命周期可能是1小时。
假设APP崩溃,并且无法在1小时内将其恢复正常。我仍然需要以某种方式接收这些消息。
有多种方法可以实现它:
完美的解决方案是为SNS消息设置无限超时,但看起来亚马逊不支持它。
您认为解决此问题的最佳解决方案是什么?我错过了什么吗?
答案 0 :(得分:5)
一种选择可能是让SNS将消息传递给调用您应用的Lambda。如果Lambda无法将消息传递到您的应用程序,则会失败,以便SNS将重试Lambda。然后,您可以使用死信队列(SQS)配置Lambda,以便在失败次数过多时,消息将进入队列。最后,您可以按计划运行另一个Lambda,该计划检查死信队列并重试Lambda调用。如果失败,它会继续将消息放回到死信队列中。
这样,如果您的应用可用,则会立即发送消息。如果该应用程序不可用,那么它将在稍后重试交付。
答案 1 :(得分:0)
我相信对您来说最简单的解决方案是为SNS订阅设置一个SNS死信队列,该队列将消息传递到App。详细信息: