当前位置:  开发笔记 > 编程语言 > 正文

AWS SNS消息生存期

如何解决《AWSSNS消息生存期》经验,为你挑选了1个好方法。

我有一个用例,我需要Amazon SNS发送通知,直到我的应用程序(让我们称之为APP)成功收到它,但文档说消息的最长生命周期可能是1小时.

让我们说APP崩溃了,并且不可能在1小时内让它生效.我仍然需要以某种方式接收这些消息.

有多种方法可以实现它:

    APP从SQS进行民意调查.我不喜欢这个选项,因为它在APP和AWS之间产生了太多的网络流量.

    SNS向两者发送通知:APP和SQS.如果APP能够接收消息,它将立即从SQS中删除它.如果APP无法接收消息(崩溃),它可以在启动时从SQS加载消息并清理队列.

    AWS Lambda代码作为消息传递服务.如果Lambda代码失败,它可以将消息推送到SQS死信队列,否则保持队列清洁.处理Lamba代码更新的开销太大,如果可能的话,使用纯AWS解决此问题会很酷.

完美的解决方案是为SNS消息设置无限超时,但看起来亚马逊不支持它.

您认为解决此问题的最佳解决方案是什么?我错过了什么吗?



1> 小智..:

一种选择可能是让SNS将消息传递给调用您的应用程序的Lambda.如果Lambda无法将消息传递到您的应用程序,则会失败,以便SNS将重试Lambda.然后,您可以使用死信队列(SQS)配置Lambda,以便在失败次数过多时,消息将进入队列.最后,您可以按计划运行另一个Lambda,该计划检查死信队列并重试Lambda调用.如果失败,它会继续将消息放回到死信队列中.

这样,如果您的应用程序可用,则会立即传递消息.如果该应用程序不可用,那么它将在稍后重试交付.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有