【发布时间】:2019-01-08 23:17:09
【问题描述】:
SNS 为其接收到的所有消息提供持久存储。收到发布请求后,SNS 在向发送者确认收到请求之前,会在多个可用区中存储消息的多个副本(到磁盘)。每个 AWS 区域都有多个独立的位置,称为可用区。虽然很少见,但如果某个区域发生故障,SNS 的操作和您的消息的持久性将继续而不会中断。
和
如果成功处理所有已发布消息至关重要,则开发人员应将通知传递到 SQS 队列(除了通过其他传输的通知)。
我在理论上很好奇,有没有人知道会导致 SNS 接受消息的任何条件(即 API 以成功代码响应,导致消费者相信消息已被成功接受) “丢失”,特别是在使用订阅队列的 SQS 消费者时,即消息不会(也永远不会)传递给 SQS 订阅者。
脚注:大约一个月前,我确实在server fault 上问过同样的问题,但遗憾的是没有得到任何关注。如果问题的框架很糟糕,最好知道我可以如何改进它。
【问题讨论】:
-
听起来您想知道在 SNS 和 SQS 之间是否会丢失消息。如果您已设置订阅,则由 AWS 负责处理从 SNS 到 SQS 的传输。我从未听说过有消息丢失,而且我认为您必须询问 AWS 支持以获得明确的答案,如果此时消息甚至有可能丢失。话虽如此,我确信 AWS 已经为使订阅正常工作投入了很多心思。
-
我找到了一些文档;让这成为一个答案。
标签: messaging amazon-sqs amazon-sns