如果我订阅了AWS SNS主题的lambda作业出现故障或停止工作,该怎么办



我在AWS中有一个SNS主题的发布者和一个订阅者。假设我的订阅者出现故障并以故障退出。

SNS会重新发布那些失败的消息吗?

如果不是

有没有其他方法可以实现这个目标,即我的系统从上次成功执行lambda开始处理?

有一个重试策略,但如果您的应用程序已经收到消息,则为否。如果出现问题,您将不会再看到它,并且由于Lambdas不携带状态。。。你可能会有麻烦。

我可能会考虑看SQS而不是SNS。请记住,SQS中的消息不会被删除,除非您删除了它们,并且您可以设置一个不可见窗口。因此,您可以轻松地确保下一次Lambda执行从中断的地方开始(取决于您的设置)。然后,每个Lambda都将负责从SQS中删除该消息,这就是您知道该消息被处理的方式。

如果不了解更多关于您的申请和需求的信息,我无法确定。。。但我会看看它。我之前已经构建了一个"taskmaster"Lambda,它按照时间表运行并从SQS队列中读取(实际上是多个队列——计划的作业根据从哪个队列读取来传递不同的JSON事件)。然后,它会将工作传递给相应的Lambda"工作人员",后者会删除该消息。如果它停止工作。。。好吧,隐形期会超时(5分钟在这里还不错,因为这是Lambda可以执行的全部时间),下一个Lambda会接受它。然后,taskmaster将根据需要经常运行,并根据需要从队列中读取尽可能多的作业。这确实有助于您完全控制处理事情的速度、重试次数等。然后,您还可以使用死信队列来捕获任何可能失败的东西(还可以考虑将事情重新插入队列)。

你在SQS方面有很大的灵活性,老实说,我真的不确定你在SNS方面是否能做到。我从来都不喜欢SNS,尽管它也有时间和地点,所以在这里我不知道更多的情况下,我不能说SQS是否适合你。。。但我认为,如果SQS对您的应用程序有意义,您的担忧可以通过它来解决。

相关内容

最新更新